我在定期任务中运行以下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
)流程 - 即等待组{{{ 1}}&新task_A2, ... ,task_An
)完成并启动task_A1'
。
我目前的解决方案是撤销task_B
& task_A1
并添加新任务task_B
& task_A1'
排队 - 但我想知道如何创建这个新的
与已经运行的task_B'
组合,实现类似:
task_A2, ... , task_An
我是通过撤销任务并在CeleryRouter中“重新连接”它来做到这一点的。我正在从(group(task_A1', task_A2, ... , task_An) | task_B')
和celeryapp.control.inspect().active()
中提取任务。我想知道是否有优雅的方式来实现我的目标。
感谢。