【发布时间】:2019-01-29 07:02:49
【问题描述】:
如果 celery 在执行某个任务时崩溃,重启 celery 后该任务丢失。崩溃时队列中的任务将在 RabbitMQ 中正常恢复。但是我怎样才能使活动任务持久化呢?
【问题讨论】:
标签: celery persistence
如果 celery 在执行某个任务时崩溃,重启 celery 后该任务丢失。崩溃时队列中的任务将在 RabbitMQ 中正常恢复。但是我怎样才能使活动任务持久化呢?
【问题讨论】:
标签: celery persistence
Celery 默认配置为task_acks_late=False。 [1] 这意味着一旦工作人员从队列中接收到任务,任务就会被确认。而如果任务失败了,队列也无从知晓。
将task_acks_late 设置为True,任务将在处理完成后得到确认。当任务失败时,它被重新排队。 [2] 但请注意,您的任务必须是幂等的。 [3]
【讨论】: