我正在浏览芹菜代码。一旦任务函数通过(task_trace)运行,就会调用Acks_late。 但是,在Redis中,一旦收到任务(即从Redis Queue弹出),RedisWorkerController就会为它创建一个任务请求。如果工作节点死亡,它又如何排队?
答案 0 :(得分:0)
如果消息未被确认,则消息不会再次排队(如果工作人员去世,这是不可能的。它们在Redis中确实以未被确认的形式存在)。
根据celery文档,Redis经纪人有一个visibility timeout mechanism。
因此,如果在可见性超时之内未确认该消息,我们应该能够期望该消息再次传递给工作人员。就是这样。如果在处理acks_late任务期间断电,则在可见性超时过后,在线工作人员会再次接收该任务。