Python 将任务的签名设置为芹菜中多个链的起始任务
假设A到G是异步任务,我们希望实现类似于此画布的任务工作流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) ).
/---> 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
可以在eb
和e
,你确定只有组中的第一个得到了之前的结果吗?@ItayB我知道!b
,c
,e
不保留顺序,但肯定a
会在所有结果之前完成,因为有一个链。我只想使用a
的返回值作为输入b
、c
和e
@ItayB的参数,请写出您的解决方案((a |组(b,(c | d)、(e | f | g))
),作为答案:)