首页 > 解决方案 > Celery - 使用 Task.retry() 处理 WorkerLostError 异常

问题描述

我正在使用芹菜 4.4.7

我的一些任务使用了太多内存并且被 SIGTERM 9 杀死。我想稍后重试它们,因为我在机器上运行并发,它们可能会再次运行正常。但是,据我了解,您无法捕获任务中抛出的 WorkerLostError 异常,即这不会像我预期的那样工作:

from billiard.exceptions import WorkerLostError

@celery_app.task(acks_late=True, max_retries=2, autoretry_for=(WorkerLostError,))
def some_task():
   #task code

我也不会不使用task_reject_on_worker_lost ,因为它会使任务重新排队并且不应用 max_retries。

处理我的用例的最佳方法是什么?

在此先感谢您的时间 :)

加尔

标签: celery

解决方案


推荐阅读