将任务的签名设置为芹菜中多重链的起始任务

时间:2017-11-08 07:09:57

标签: python asynchronous celery celery-task celery-canvas

假设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作为经纪人)

1 个答案:

答案 0 :(得分:1)

我知道! bce不保留顺序,但肯定a会在所有这些之前完成,因为有一个链。我只想使用a的返回值作为bce的输入参数。