如何动态更改芹菜中的任务签名

时间:2018-06-01 20:16:06

标签: python celery celery-task

假设我有几个任务A,B,C和D.任务A返回一个数字。任务B和C需要这个数字作为他们的第一个参数。 C必须遵循任务B,D必须遵循C.您如何在芹菜中代表这个工作流程?

我的第一次尝试是为B和C定义一个包装器,如下所示:

@task(name="wrapper")
def wrapper(num):
    return (B.si(num) | C.si(num)).get()

然后我会把它们连在一起:

A.si() | wrapper.s() | D.si()

有没有什么方法不需要这个无用的包装器任务?是否有更通用的东西?我想我感觉受限于这样一个事实:每个任务只从链中的前一个接收它的参数。

0 个答案:

没有答案