我有一个父任务,它会产生一个任意且可能大量的子任务。一旦父项和所有子任务都完成,我需要在我的数据库中设置一个标志,表明它已准备就绪。我最好怎么做呢?
例如:
@task()
def master_task(foo):
foo_obj = Foo.objects.get(id=foo)
for bar in foo_obj.bar_set.all():
more_work.delay(bar.id)
@task()
def more_work(bar):
bar_obj = Bar.objects.get(id=bar)
do_work()
我需要检测master_task及其生成的所有子任务何时完成,以便我可以在相关模型上设置标志以指示一切准备就绪
答案 0 :(得分:4)
使用chords
<德尔> 你应该使用[TaskSet] [1]: &GT; TaskSet可以一次轻松调用多个任务,然后能够以调用任务的相同顺序连接结果。 德尔>答案 1 :(得分:2)
celery.chord正是为此而设计的。