这是我想要做的一个非常简单的例子:
@shared_task
def add(x, y):
return x + y
@shared_task
def sub(x, y):
return x - y
@shared_task
def mult(x, y):
return x * y
c = group(
chain(
add.s(4), mult.s(2)
),
sub.s(1)
)(3)
这应该给我结果[14, 2]
,但我收到以下错误消息:
TypeError:add()只需要2个参数(给定1个)
因此,部分签名似乎有问题,并且初始3
未传递给我的链中的函数。这有什么问题,有没有办法解决这个问题?
答案 0 :(得分:1)
任何添加的参数(3
)都将仅添加到签名(task.s
)中的args。他们不会被传播到基元(如链,组,和弦)。
如果您事先知道添加的参数,则可以执行
c = group(
chain(
add.s(4, 3), mult.s(2)
),
sub.s(1)
)(3)
否则,您必须重新设计工作流程。