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

Setting a signature of a task as starting task of multipe chain in celery

假设 A 到 G 是异步任务,我们想要实现这样的任务工作流 canvas

     /---> 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 作为代理)

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