使用celery作为容错调度程序

时间:2011-04-06 08:58:53

标签: python rabbitmq celery

我想在分布式环境中使用celery w / rabbitmq作为容错调度程序。 通过容错,我的意思是,如果一个任务被赋予一个工人并且该工作人员因任何原因而失败,芹菜应该能够将其重新安排到另一个服务器。 如何在有多个工作节点的环境中实现这一点?

2 个答案:

答案 0 :(得分:5)

您可能只需设置CELERY_ACKS_LATE

即可

延迟确认意味着任务消息将在执行任务后被确认,而不仅仅是之前,这是默认行为。这样,如果工作者崩溃,兔子MQ仍然有消息。

更多信息

Retry Lost or Failed Tasks (Celery, Django and RabbitMQ)

答案 1 :(得分:2)

让每个工作人员从同一个队列中消费,Rabbit会将消息循环到工作人员(消费者)。如果其中任何一个在处理作业时失败并且在它有机会发送确认之前,该消息将自动放回队列中,下一个工作人员将接收它。这是一种“至少一次”的交付模式。

来自RabbitMQ网站的

This link解释了该模式并包含了Python示例代码。