web-dev-qa-db-ja.com

RabbitMQの代わりにCeleryを使用する理由

私の理解では、Celeryは分散タスクキューです。つまり、Celeryが行うべきことは、タスク/ジョブを他のサーバーにディスパッチして結果を取得することだけです。 RabbitMQはメッセージキューであり、それ以上のものはありません。ただし、ワーカーはMQをリッスンし、メッセージを受信したときにタスクを実行できます。これにより、セロリが提供するものが正確に実現されますが、なぜセロリが必要なのでしょうか?

61
Kar

あなたは正しい、あなたはセロリをまったく必要としません。分散システムを設計する場合、多くのオプションがあり、すべての状況に適合することを行う正しい方法はありません。

多くの人は、メッセージコンシューマのプールを使用して、メッセージがキューに表示されるのを待って、作業を行い、作業が終了したときにメッセージを送信する方が柔軟であることに気付きます。

Celeryは、パッケージ内の多くの要素をパッケージ化するフレームワークですが、パッケージ全体が本当に必要ない場合は、RabbitMQをセットアップし、複雑さなしに必要なものだけを実装することをお勧めします。さらに、RabbitMQは、Celeryが実装するタスクキューシナリオ以外の多くのシナリオで使用できます。

ただし、Celeryを選択した場合は、RabbitMQについてもう一度考えてください。 Celeryのメッセージキューモデルは単純化されており、RabbitMQよりもRedisのようなものに適しています。 Rabbitには、Celeryが基本的に無視する豊富なオプションがあります。

52
Michael Dillon

Celeryは基本的に、あなたが言ったことだけを行うためのNiceインターフェイスを提供し、すべての設定を処理します。はい、手でできますが、セロリを書き換えるだけです。

29
mjtamlyn