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

Python 将任务的签名设置为芹菜中多个链的起始任务,python,asynchronous,celery,celery-task,celery-canvas,Python,Asynchronous,Celery,Celery Task,Celery Canvas,假设A到G是异步任务,我们希望实现类似于此画布的任务工作流 /---> B() A() ----> C() -> D() \---> E() -> F() -> G() 根据这个问题,我们需要使用()的结果来启动多个链 代码: from celery import chain # A (params) ????? B.apply_async(params) chain( C.s(params), D.s(params) ).

假设A到G是异步任务,我们希望实现类似于此画布的任务工作流

     /---> B()
A()  ----> C() -> D()
     \---> E() -> F() -> G()
根据这个问题,我们需要使用()的结果来启动多个链

代码:

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()
在芹菜画布中,如何在不运行A()三次的情况下,将A()的结果异步地用于多个链的第一个元素


(我使用芹菜4.1.0和RabbitMQ作为代理)

我知道
b
c
e
不能维持秩序,但肯定
a
会在它们之前完成,因为存在一个链。我只想使用
a
的返回值作为
b
c
e
的输入参数,如果
a=a.apply_async(params)
等,您是否尝试
(a组(b,(c | d)、(e | f | g))
?@ItayB谢谢,我需要一些你的评论。
a
函数的结果将传递给
b
,但是我如何才能将
a
的结果传递给
c
e
?实际上我从未尝试过这种情况,你确定它不会吗?理论上,因为这是一组
c
可以在e
b
e
,你确定只有
组中的第一个得到了之前的结果吗?@ItayB我知道!
b
c
e
不保留顺序,但肯定
a
会在所有结果之前完成,因为有一个链。我只想使用
a
的返回值作为输入
b
c
e
@ItayB的参数,请写出您的解决方案(
(a |组(b,(c | d)、(e | f | g))
),作为答案:)