给定两个任务,一项从事某些工作,另一个可以清理:
@app.task
def work():
...
@app.task
def cleanup():
...
无论一组工作任务是否失败,我都希望在完成一组工作任务后完成清理任务。我已经通过运行canvas.apply_async(propagate=False)
来起作用,但是我真的只想关闭一个组的传播:
work_group = group([work.s() for i in range(0, 10)], propagate=False)
work_and_cleanup = chain(work_group, cleanup)
但是,这似乎不起作用。如何仅针对work_group
关闭传播?
仅用于成功任务,添加链接错误回调以调用清理任务。
work_and_cleanup.apply_async(link_error=cleanup.si())