在芹菜中完成一组任务后执行组任务
Execute group task after one group task finished in celery
现在我正在我的应用程序中执行 celery 任务。我希望我的任务执行链接但不知何故,链条不起作用,组工作但链条不起作用。我想要的过程是我希望在处理 GROUP_B 之后处理 GROUP_A 等等。
我试过使用和弦但仍然不知道。下面是我在 celery 中执行组任务的简单链。
谢谢大家的关注。
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
不确定我是否完全理解,但是当您使用 s() 调用任务时,它们会传递结果。
在您的任务 A 的情况下,您正在执行 3 个并行任务(组),没有传入任何内容,并将其提供给 B 任务的组。
不太确定你想要达到什么目的,如果你只想将它们链接成一个简单的
chain([D.si(i, 1), C.s(1), B.s(1), A.s(1)])
应该可以,前提是任务都接受 2 个参数
您遇到的问题是,当您将每个组向上传递到后续链时,您必须获得每个组的不可变签名,因为每个组本身就是一个任务(而不是任务的调用):
job = chain(
group(GROUP_A).si(),
group(GROUP_B).si(),
group(GROUP_C).si(),
group(GROUP_D).si()
)
job.apply_async()
现在我正在我的应用程序中执行 celery 任务。我希望我的任务执行链接但不知何故,链条不起作用,组工作但链条不起作用。我想要的过程是我希望在处理 GROUP_B 之后处理 GROUP_A 等等。 我试过使用和弦但仍然不知道。下面是我在 celery 中执行组任务的简单链。 谢谢大家的关注。
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
不确定我是否完全理解,但是当您使用 s() 调用任务时,它们会传递结果。
在您的任务 A 的情况下,您正在执行 3 个并行任务(组),没有传入任何内容,并将其提供给 B 任务的组。
不太确定你想要达到什么目的,如果你只想将它们链接成一个简单的
chain([D.si(i, 1), C.s(1), B.s(1), A.s(1)])
应该可以,前提是任务都接受 2 个参数
您遇到的问题是,当您将每个组向上传递到后续链时,您必须获得每个组的不可变签名,因为每个组本身就是一个任务(而不是任务的调用):
job = chain(
group(GROUP_A).si(),
group(GROUP_B).si(),
group(GROUP_C).si(),
group(GROUP_D).si()
)
job.apply_async()