0

ブローカーとしてRabbitMQでCeleryを使用しています。

私のプロジェクトは、長時間実行される一連のタスクグループで構成されます。前の一連のタスクの出力は、次の一連のタスクの入力です。

すべてのワーカーノードは最初に最初のタイプ(グループ)のタスクを消費し、次にすべてのワーカーが次のタイプのタスクを消費し、前の結果を入力などとして順番に消費します。

私の質問は、Celeryで、いくつのキューを定義する必要があるかということです。すべてのタスクに対して1つのキューのみですか?または、タスクの種類ごとに1つのキューを使用する必要がありますか?この場合、1つ以上のキューを使用する利点は何ですか?

前もって感謝します!

4

1 に答える 1

2

キューを分離して、2つにしました。情報の流れの観点からは、2つの別々のキューの方が理にかなっています。また、情報はこのパスを通過し、いずれかのキューのすべてのタスクが類似していることも明示的に示されています。

したがって、複数のキューの利点は、タスクが論理的な意味で互いに分離されていることです。情報の流れをわかりやすくします。タスクキューがかなり大きくなる場合は、複数のキューを念頭に置いて設計すると、必要に応じてキューを別のマシンに分離できるため、システムに冗長性も適用されます。Celery Routingを使用すると、どのマシンがどのキューをリッスンするかを分離し、タスクを他のさまざまなマシンに分離できます。

単一のキューの利点は、使用が簡単でセットアップが簡単なことですが、タスクの作業をどこで/誰が実行するかをきめ細かく制御できなくなります。そして、情報の流れは論理的な観点からはそれほど明確ではありません。

于 2012-12-18T16:57:43.050 に答える