【问题标题】:Using celery as a fault tolerant scheduler使用 celery 作为容错调度器
【发布时间】:2011-07-30 15:32:06
【问题描述】:

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

【问题讨论】:

    标签: python rabbitmq celery


    【解决方案1】:

    您可能只需要设置 CELERY_ACKS_LATE

    Late ack 意味着任务消息将在任务执行后得到确认,而不是之前,这是默认行为。这样如果worker crash rabbit MQ还是有消息的。

    这里有更多信息

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-10-24
        • 2017-03-15
        • 1970-01-01
        • 2017-03-03
        • 1970-01-01
        • 2018-05-03
        • 1970-01-01
        • 2016-05-03
        • 2015-09-07
        相关资源
        最近更新 更多