在芹菜中完成一项小组任务后执行小组任务

时间:2018-09-18 11:40:11

标签: django celery

现在我正在应用程序中执行芹菜任务。我希望我的任务执行链接,但是以某种方式,链条不起作用,小组工作但链条不起作用。我想要的过程是我希望在处理GROUP_B之后再处理GROUP_A,依此类推。 我尝试使用和弦,但仍然不知道。下面是我在芹菜上执行小组任务的简单链条。 感谢您的关注。

GROUP_A = []

GROUP_B = []

GROUP_C = []

GROUP_D = []


for i in range(3):

    GROUP_A.append(A.s(i+1))
    GROUP_B.append(B.s(i+1))
    GROUP_C.append(C.s(i+1))
    GROUP_D.append(D.s(i+1))

job = chain(

 group(GROUP_A),

 group(GROUP_B),

 group(GROUP_C),

 group(GROUP_D)

)
job.apply_async()

此致

威克亚(Meikelwis Wijaya)

2 个答案:

答案 0 :(得分:0)

不确定我是否完全理解,但是当您使用s()调用任务时,它们会传递结果。

对于任务A,您要执行3个并行任务(该组),而没有任何传入,并将其馈送到B任务的组。

如果只想将它们简单地链接起来,

chain([D.si(i, 1), C.s(1), B.s(1), A.s(1)])

应该这样做,只要所有任务都接受2个参数

答案 1 :(得分:0)

您遇到的问题是,当将每个组传递到后续链中时,您必须获得每个组的不变签名,因为每个组本身就是一个任务(而不是任务的调用):


job = chain(
 group(GROUP_A).si(),
 group(GROUP_B).si(),
 group(GROUP_C).si(),
 group(GROUP_D).si()
)
job.apply_async()