我对Celery很新,并计划用它来安排一些工作。其中一个场景如下。
TASK_NM | DEPENDENCY
T1
T2 | T1
T3 | T1
T4
T5 | T3 and T4
从上述案例中,
我必须并行执行T1和T4
成功完成T1后,并行执行T2和T3
成功完成T3和T4后,执行T5。
如果中间任何任务失败,请不要执行从属作业。
我们如何使用Celery实现这一目标?
提前致谢!!!
答案 0 :(得分:2)
是的,但这需要一些工作。您将使用chain
, group
, and chord
来获取所需的行为:
使用chain
:
res = chain(T1.si(), T2.si(), T3.si())
使用group
:
res2 = group(res.s(), T4.s())
使用chord
res3 = chord(res2.s(), T5.s())
全部执行
result = res3().get()
文档可以很好地解释哪些用于串行以及哪些用于并行。要记住的棘手部分是chain
,chord
和group
所有返回任务本身都必须使用()
,delay()
或{{1}来调用}}