我一直在寻找几天来找到一种处理芹菜任务中错误的事实上的方法。
在 Celery 文档中,我们确实了解了由于失败而重新绑定任务。
重要的是要注意,worker 不会崩溃,如果发生崩溃,通常是一个不可恢复的错误,需要人工干预(worker 或任务代码中的错误)。
...
因此,对 Python 错误使用重试,如果您的任务是幂等的,则在需要该级别的可靠性时将其与 acks_late 结合使用。
但是,如果我的任务由于逻辑错误而出现错误,那么盲目重试将无法解决问题。
在其他分布式系统中,我使用 apoison queue
来存储消息,然后在修复错误后重新处理。用于路由的 Celery 文档非常强大,让我相信可以使用 Celery 手动完成类似的方法。
在 Celery 中是否有推荐的方法来处理这个问题?