我需要以下工作流程:
ParentTask
首先运行ChildTask
的N个实例,这些实例并行运行ParentTask
等待这些完成,收集结果,以某种方式处理它们并完成这似乎很容易。不幸的是,从任务中调用Task().delay()
(我用它来调用任务)似乎完全被忽略了。我在这里完全迷路了。在
如果您更喜欢代码方法,我也包括它。在
from celery.task import Task
from celery.result import AsyncResult
class ParentTask(Task):
def run(self, *args, **kwargs):
# do some stuff
ids = [ChildTask().delay().id for _ in range(N)] # this seems to do nothing here
results = [AsyncResult(t) for t in ids]
while not all([r.ready() for r in results]): # wait for child tasks to finish
sleep(.100)
# do some stuff again
# return results
class ChildTask(Task):
def run(self, *args, **kwargs):
# do some child stuff
# return child results
ParentTask().delay() # this delay works fine
谢谢你的任何线索!在
好的,我知道了。工作方法可以是这样的(当然,任务可以做任何需要的东西):
希望它能帮助别人。在
相关问题 更多 >
编程相关推荐