如果芹菜工人死得很重,工作会被重审吗?

时间:2017-01-10 20:24:28

标签: redis rabbitmq celery

如果工作人员运行的服务器死了,是否有办法重试芹菜作业?我不只是指执行作业的子进程,而是整个服务器都不可用。

我尝试使用RabbitMQ和Redis作为经纪人。在这两种情况下,如果当前正在处理作业,则完全忘记了它。当一个工人重新启动时,它甚至都没有尝试重新处理这个工作,看着Rabbit或Redis,他们的队列是空的。结果后端也是空的。

看起来工作人员抓取消息并假设它会在子进程失败时将其恢复,但如果工作者也死了,它就无法将其恢复。

(是的,我的工作环境每年发生一次以上,而且我不想丢失任务)

1 个答案:

答案 0 :(得分:2)

理论上,设置visibility_timeout应该可以解决问题。 (doc

使用Redis代理,该任务将在@Id之后重新传递,默认为一小时。 (doc

使用RabbitMQ,只要兔子发现工人死亡,就会重新交付任务。