1

chord定期的なタスクで次を実行しています。

(group(task_A1, task_A2, ... , task_An) | task_B)

各タスク ( task_A1task_A2... 、task_An) の実行には 5 ~ 10 分かかる場合があります。

次のシナリオを考えてみましょう: 定期的なタスク (毎時) の間、task_A1..task_Anが並行して実行されています。ここで、別のフローから誰かが外部task_A1'タスクをトリガーしました。私の目標は、現在実行中のものだけを停止して置き換えtask_A1、フローをそのまま (停止せずに..)維持task_A1'することtask_A2です。task_Antask_A2, ... ,task_Antask_A1'task_B

task_A1私の現在の解決策は、 &を取り消しtask_Bて新しいタスクtask_A1'&をキューに追加することですが、次のようなものを達成するためにtask_B'、既に実行中の とこの新しい組み合わせを作成する方法を知りたいです:task_A2, ... , task_An

(group(task_A1', task_A2, ... , task_An) | task_B')

タスクを取り消し、CeleryRouter でそれらを「再配線」することでそれを行っています。と からタスクを取得しceleryapp.control.inspect().active()ていceleryapp.control.inspect().reserved()ます。私の目標を達成するエレガントな方法があるのだろうか。

ありがとう。

4

0 に答える 0