使用Celery,如何从" Ready"中删除任务。使用acks_late = True时的状态?

时间:2017-05-12 23:47:05

标签: python rabbitmq celery

在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)

此外,如果我退出/重新启动工作人员,它也不会抓取处于就绪状态的消息。为什么这样,有没有办法抓住它们?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果这个搜索出现在任何人身上,那么它与backend =参数有关。一些教程包含此参数,但不解释后果。它将任务的结果作为消息保留回RabbitMQ。