我在Django项目中使用celery chain
。
对于链式任务,我使用task_postrun
信号撤销所有后续任务similar to this。
@task_postrun.connect
def task_postrun_handler(
signal, sender, task_id, task, retval, state, args, kwargs, **kwds
):
# do other things first
if retval != 1:
task.request.chain[:] = []
因此,如果任务的返回值不是1,则撤消所有后续任务。它工作正常。
但是,在我的测试中,我以急切模式运行任务。它确实进入了
task_postrun_handler
,但没有chain
数组(callbacks
也是None
)。
通过这种方式,我无法在测试中终止任务链。
我在celery 3.1.23
和celery 4.0.2
感谢您的帮助。