これが、まったく同じ質問に答えようとしたときに見つけたものです。それはおそらく包括的ではなく、いくつかの点で不正確でさえあるかもしれません。
つまり、RQは全体的にシンプルになるように設計されています。セロリは、より堅牢になるように設計されています。どちらも優れています。
- ドキュメンテーション。RQのドキュメントは複雑ではなく包括的なものであり、プロジェクトの全体的なシンプルさを反映しています。迷ったり、混乱したりすることはありません。Celeryのドキュメントも包括的ですが、内部化するオプションが多すぎるため、最初に設定するときは、何度も再訪することになるでしょう。
モニタリング。Celery's FlowerとRQダッシュボードはどちらも設定が非常に簡単で、必要なすべての情報の少なくとも90%を提供します
ブローカーのサポート。セロリは明らかに勝者であり、RQはRedisのみをサポートしています。これは、「ブローカーとは」に関するドキュメントが少なくなることを意味しますが、Redisが機能しなくなった場合、将来ブローカーを切り替えることができなくなります。たとえば、Instagramは、CeleryでRedisとRabbitMQの両方を検討しました。ブローカーによって保証が異なるため、これは重要です。たとえば、Redis では、メッセージの配信が100%保証されることはありません(執筆時点)。
優先キュー。RQ優先キューモデルはシンプルで効果的で、ワーカーはキューから順番に読み取ります。セロリは、異なるキューから消費するために複数のワーカーをスピンアップする必要があります。どちらのアプローチでも機能します
OSサポート。RQは、fork
たとえばUnixシステムをサポートするシステムでのみ実行されるため、ここではCeleryが明らかに勝者です。
言語サポート。RQはPythonのみをサポートしていますが、Celeryでは1つの言語から別の言語にタスクを送信できます
API。Celeryは非常に柔軟性があります(複数の結果のバックエンド、優れた構成形式、ワークフローキャンバスのサポート)。対照的に、RQ APIは単純です。
サブタスクのサポート。Celeryはサブタスクをサポートします(例えば、既存のタスク内からの新しいタスクの作成)。RQがするかどうかわかりません
コミュニティと安定性。セロリはおそらくもっと確立されていますが、どちらもアクティブなプロジェクトです。執筆の時点では、Githubにセロリの星は〜3500個あり、RQは〜2000個であり、どちらのプロジェクトも活発な開発を示しています
私の意見では、Celeryはその評判から信じられるほど複雑ではありませんが、RTFMを使用する必要があります。
では、なぜ誰もが(おそらくよりフル機能を備えた)セロリをRQと交換しようとするのでしょうか?私の心の中で、それはすべて単純さに帰着します。自身をRedis + Unixに制限することにより、RQは、よりシンプルなドキュメント、よりシンプルなコードベース、およびよりシンプルなAPIを提供します。これは、タスクキューシステムに関する詳細を作業メモリに保持する代わりに、あなた(およびプロジェクトへの潜在的な貢献者)が気になるコードに集中できることを意味します。私たち全員が一度に頭に入れることができる詳細の数には制限があり、タスクキューの詳細をそこに保持する必要をなくすことで、RQは気になるコードに戻ることができます。その単純さは、言語間タスクキュー、幅広いOSサポート、100%信頼できるメッセージ保証、およびメッセージブローカーを簡単に切り替える機能などの機能を犠牲にしてもたらされます。