16

タスクを特定のキューにルーティングすると、次のように機能します。

task.apply_async(queue='beetroot')

しかし、チェーンを作成すると、次のようになります。

chain = task | task

そして、私は書きます

chain.apply_async(queue='beetroot')

queueキーワードを無視しているようで、デフォルトの「celery」キューに割り当てます。

セロリがチェーンでのルーティングをサポートしていると便利です。すべてのタスクが同じキューで順番に実行されます。

4

3 に答える 3

11

わかりました、私はこれを理解しました。

queue= や countdown= などの必要な実行オプションをサブタスク定義に追加するか、部分的に追加する必要があります。

サブタスク定義:

from celery import subtask

chain = subtask('task', queue = 'beetroot') | subtask('task', queue = 'beetroot')

部分的:

chain = task.s().apply_async(queue = 'beetroot') | task.s().apply_async(queue = 'beetroot')

次に、チェーンを次のように実行します。

chain.apply_async()

また、

chain.delay()

タスクは「beetroot」キューに送信されます。この最後のコマンドの余分な実行引数は何もしません。チェーン (またはグループ、またはその他のキャンバス プリミティブ) レベルでこれらの実行引数をすべて適用できれば、ちょっと便利でした。

于 2013-02-19T13:47:19.643 に答える