使用celery作为容错调度程序

Che*_*ezo 6 python rabbitmq celery

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

Mau*_*cco 5

可能你只需要设置CELERY_ACKS_LATE即可

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

这里有更多信息

重试丢失或失败的任务(Celery,Django和RabbitMQ)


Bri*_*lly 2

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

来自 RabbitMQ 站点的此链接解释了该模式并包含 Python 示例代码。