1. ホーム
  2. python

[解決済み] なぜRabbitMQの代わりにCeleryを使うのか?

2022-12-31 11:07:27

質問

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

どのように解決するのか?

おっしゃるとおり、Celeryは全く必要ありません。分散システムを設計する場合、多くのオプションがあり、すべての状況に適合する正しい方法は存在しません。

多くの人は、メッセージ消費者のプールがキューにメッセージが表示されるのを待ち、何らかの作業を行い、作業が終了したらメッセージを送信する方がより柔軟であることに気づきます。

Celeryは多くのことをパッケージにしたフレームワークですが、パッケージ全体を本当に必要としないのであれば、RabbitMQをセットアップして、すべての複雑さを排除して必要なものだけを実装する方がよいでしょう。さらに、RabbitMQはCeleryが実装しているタスクキューシナリオ以外にも多くのシナリオで使用することができます。

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