chord
定期的なタスクで次を実行しています。
(group(task_A1, task_A2, ... , task_An) | task_B)
各タスク ( task_A1
、task_A2
... 、task_An
) の実行には 5 ~ 10 分かかる場合があります。
次のシナリオを考えてみましょう: 定期的なタスク (毎時) の間、task_A1
..task_An
が並行して実行されています。ここで、別のフローから誰かが外部task_A1'
タスクをトリガーしました。私の目標は、現在実行中のものだけを停止して置き換えtask_A1
、フローをそのまま (停止せずに..)維持task_A1'
することtask_A2
です。task_An
task_A2, ... ,task_An
task_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()
ます。私の目標を達成するエレガントな方法があるのだろうか。
ありがとう。