我遇到与下面这种芹菜工作流程的一些非常奇怪的行为链:芹菜帆布组传递参数太多组成任务
workflow = group(
chain(task1.s(), task2.s()),
chain(task3.s(), task4.s()),
)
这是在Django的背景下。
当我调用工作流程如下:
workflow.apply_async((n,))
...对于n的任意整数值,在每个链(task1
和task3
)第一个任务将会失败,像以下一个TypeError (从celery events
拍摄):
args: [9, 8, 7, 5, 4, 3]
kwargs: {}
retries: 0
exception: TypeError('task1() takes exactly 1 argument (6 given)',)
state: FAILURE
后的第一个参数是始终工作流之前用所谓的论据。所以,在这个例子中,我在这个时候调用了workflow.apply_async((9,))
,其他的数字是以前通过的值。每一次,传递给task1
和task3
的恶意论据都是一样的。
我很想试试把它作为一个错误报告发给芹菜,但我还不确定这个错误是不是我的。
事情我已经排除了:
- 我肯定传递参数我想我传递给
workflow.apply_async
。我已经单独构建并记录了我传递的元组,以确保这一点。 - 这与将一个列表(即可变)传递给
apply_async
而不是元组无关。我肯定会传递一个元组(即不可变)。
的只有适度的不寻常的事情对我的设置,虽然我不能看到它是如何连接的,它是task1
和task3
与不同的队列配置。