WorkerLost 的 Celery 重启逻辑

问题描述 投票:0回答:1

Python 3.8、Celery 4.4.4、Redis、Django

寻找一些指导来帮助完善我的 Celery 重启逻辑和设置。我有一系列复杂的流程,广泛使用 Chords 来并行化长时间运行的程序。在 AWS 云中,我们使用 kubernetes 运行,其内存请求设置为略高于平均水平,限制设置为略高于观察到的最大值。

考虑到环境的复杂性和输入(文档)大小的高度可变,当任务被终止时,我们偶尔会出现 WorkerLostError ,因为所需的内存不可用......即使它低于指定的限制。

我的问题:被杀死的工人是否会受到与其他异常相同的重试逻辑?如果我设置了reject_on_worker_lost=True,它是否会限制在任务装饰器中指定的重试次数,或者如果操作系统无法找到所需的内存,这是否是一个潜在的无限循环?退避和抖动会适用吗?是否有适用于这种操作系统驱动的异常的事件处理程序?

谢谢

python-3.x celery
1个回答
0
投票

因此,经过一些尝试和错误后,重试计数和逻辑似乎不适用于工作人员丢失错误。我计划采取一种方法,设置“reject_on_worker_lost=True”,但也要确保在这种情况下将过期争论传递给和弦回调,以便管理无限循环的风险。

如果 celery 团队更新文档来处理云中的一些现实情况,那就太好了。希望看到关于如何在维护重试功能的同时重试工作人员丢失的任务的明确指导,和/或完善自定义请求/任务 on_failure() 的文档,以便我们可以更轻松地自己完成。我可能会检查我所有的自动重试逻辑,因为除了工人丢失之外,我不关心任何异常......

© www.soinside.com 2019 - 2024. All rights reserved.