Acks_late:celery + redis broker / backend

wbrvyc0a  于 12个月前  发布在  Redis
关注(0)|答案(1)|浏览(153)

我在检查celery 代码。一旦任务函数通过(task_trace)运行,就会调用Acks_late。然而,在Redis中,一旦收到一个任务(即从Redis队列中弹出),RedisWorkerController就会为其创建一个任务请求。在工作节点死亡的情况下,它如何再次排队?

7ajki6be

7ajki6be1#

如果消息没有被确认,它们就不会再次排队(如果工人死亡,这将是不可能的。它们在Redis中确实存在,但未被承认)。
根据celery文档,Redis代理有一个可见性超时机制。
因此,如果消息在可见性超时内没有得到确认,我们应该能够期望消息再次被传递给worker。结果就是这样。如果在acks_late任务的处理过程中断电,则在可见性超时之后,该任务将再次由在线工作线程接收。

相关问题