我必须产生某些任务,并让它们并行执行。然而,我也需要他们的所有这些结果集中更新。
有没有可能以某种方式访问父任务中所有这些任务的结果?我知道我不能从任务中调用task_result.get(),因为芹菜不允许这样做,有没有其他方法可以做到这一点?
发布于 2020-12-18 15:16:37
您可以让Celery等待子任务的结果(请参阅get()的disable_sync_subtasks参数),但不建议这样做,因为您可能会死锁worker (有关详细信息,请参阅here )。所以如果你使用它,你应该知道你在做什么。
对于您的用例,推荐的方法是使用chord
和弦就像一个组,但有一个回调。chord由header组和body组成,其中body是应该在header中的所有任务完成后执行的任务。
这确实需要您对逻辑进行一点重构,这样就不需要父任务中的子任务结果,而是在chord的正文中处理它。
https://stackoverflow.com/questions/65342163
复制相似问题