私の理解では、Celeryは分散タスクキューです。つまり、Celeryが行うべきことは、タスク/ジョブを他のサーバーにディスパッチして結果を取得することだけです。 RabbitMQはメッセージキューであり、それ以上のものはありません。ただし、ワーカーはMQをリッスンし、メッセージを受信したときにタスクを実行できます。これにより、セロリが提供するものが正確に実現されますが、なぜセロリが必要なのでしょうか?
あなたは正しい、あなたはセロリをまったく必要としません。分散システムを設計する場合、多くのオプションがあり、すべての状況に適合することを行う正しい方法はありません。
多くの人は、メッセージコンシューマのプールを使用して、メッセージがキューに表示されるのを待って、作業を行い、作業が終了したときにメッセージを送信する方が柔軟であることに気付きます。
Celeryは、パッケージ内の多くの要素をパッケージ化するフレームワークですが、パッケージ全体が本当に必要ない場合は、RabbitMQをセットアップし、複雑さなしに必要なものだけを実装することをお勧めします。さらに、RabbitMQは、Celeryが実装するタスクキューシナリオ以外の多くのシナリオで使用できます。
ただし、Celeryを選択した場合は、RabbitMQについてもう一度考えてください。 Celeryのメッセージキューモデルは単純化されており、RabbitMQよりもRedisのようなものに適しています。 Rabbitには、Celeryが基本的に無視する豊富なオプションがあります。
Celeryは基本的に、あなたが言ったことだけを行うためのNiceインターフェイスを提供し、すべての設定を処理します。はい、手でできますが、セロリを書き換えるだけです。