假设A到G是异步任务,我们想要实现像这个画布一样的任务工作流程
/---> B()
A() ----> C() -> D()
\---> E() -> F() -> G()
根据问题,我们需要使用A()的结果来启动多个链。
在代码中:
from celery import chain
# A (params) ?????
B.apply_async(params)
chain(
C.s(params), D.s(params)
).apply_async()
chain(
E.s(params), F.s(params), G.s(params)
).apply_async()
在Celery Canvas中,如何在不运行A()三次的情况下异步使用A()的结果到多个链的第一个元素?
(我使用Celery 4.1.0和RabbitMQ作为经纪人)
答案 0 :(得分:1)
我知道! b
,c
,e
不保留顺序,但肯定a
会在所有这些之前完成,因为有一个链。我只想使用a
的返回值作为b
,c
和e
的输入参数。