在Celery中,如果在任务中使用acks_late = True,则在任务完成之前,它不会立即确认任务立即确认任务。
我有一个非常简单的任务,只打印出消息。如果我发送一堆消息,工作人员将打印出消息,但它们不会被删除。兔子仍然将它们报告为“准备就绪”。" "就绪"和" Total"将具有相同的数字(并保持递增)但是" Unacked"随着工人的完成,总是会回到0。
所以看来确实,一旦任务完成,他们就会被激活,但是你如何将它们从" Ready"状态?
from celery import Celery
broker_uri = 'amqp://.....'
celery_app = Celery('my_name', broker=broker_uri, backend='rpc://')
@celery_app.task(name='bam.add', acks_late=True)
def add(filename):
print(filename)
此外,如果我退出/重新启动工作人员,它也不会抓取处于就绪状态的消息。为什么这样,有没有办法抓住它们?
谢谢!
答案 0 :(得分:0)
如果这个搜索出现在任何人身上,那么它与backend =参数有关。一些教程包含此参数,但不解释后果。它将任务的结果作为消息保留回RabbitMQ。