如何使芹菜在掉落的任务方面更加健壮?



偶尔(阅读:太频繁)我的芹菜设置会放弃任务。我正在Django 1.11上运行最新的celery 4.x,并为队列和结果提供redis后端。

我不知道为什么任务被丢弃,但我怀疑的是,一个工作人员正在启动一个工作,然后这个工作人员由于某种原因被杀死(自动缩放操作、重新部署、内存不足......),作业在中间被杀死。

此时,它可能已退出redis队列,并且不会再次被拾取。

所以我的问题是:

  1. 我怎样才能监控这种事情?我使用celerymon,并且任务未报告为失败,但我在数据库中看不到我怀疑失败的任务所期望的数据。
  2. 如何在不实现自己的"假队列"的情况下重试此类任务celery并在数据库中使用标志?
  3. 如何使celery总体上更加健壮可靠?

感谢您的任何指示!

你必须使用 RabbitMq 而不是 redis,我在芹菜文档中读到了这一点(就在这里:https://docs.celeryproject.org/en/stable/getting-started/first-steps-with-celery.html#choosing-a-broker):

RabbitMQ 功能齐全、稳定、耐用且易于安装。这是一个 生产环境的绝佳选择。

Redis 也是功能完整的,但更容易在 突然终止或电源故障的事件。

使用兔子mq,重新启动时丢失消息的问题必须消失。

最新更新