[解決済み] なぜ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が基本的に無視する豊富なオプションのセットがあります。
関連
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み】なぜPostgreSQLのようなデータベース上でRabbitMQのようなメッセージブローカーが必要なのでしょうか?
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] Python Empty Generator 関数
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複