【问题标题】:Accessing Celery Group Task Results inside a Celery Worker在 Celery Worker 中访问 Celery Group 任务结果
【发布时间】:2023-03-07 14:20:02
【问题描述】:

我必须生成某些任务并让它们并行执行。但是,我还需要集中更新所有这些结果。

是否有可能以某种方式访问​​父任务中所有这些任务的结果?我知道我不能从任务中调用 task_result.get(),因为 Celery 不允许这样做,还有其他方法可以实现吗?

【问题讨论】:

    标签: python celery task


    【解决方案1】:

    您可以让 Celery 等待子任务的结果(请参阅 disable_sync_subtasks 参数到 get()),但不建议这样做,因为您可能会使工作人员死锁(有关详细信息,请参阅 here)。所以如果你使用它,你应该知道你在做什么。

    为您的用例推荐的方法是使用chord

    和弦就像一个组,但有一个回调。一个和弦由一个标题组和一个正文组成,其中正文是一个任务,应该在标题中的所有任务完成后执行。

    这确实需要你稍微重构你的逻辑,这样你就不需要在父任务中处理子任务的结果,而是在和弦的主体中处理它。

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 2015-05-16
      • 2021-01-24
      • 2012-06-06
      • 1970-01-01
      • 2021-02-25
      • 2019-07-20
      • 2022-11-25
      • 2017-10-11
      相关资源
      最近更新 更多