如何定期清除芹菜Rabbitmq中的队列?

时间:2018-11-14 07:23:15

标签: python rabbitmq celery

我如何定期清除芹菜队列,例如在队列中还有未完成的任务之后每分钟清除一次,那么我需要在一分钟后清除所有这些任务。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果您需要使任务超时,请使用Time to Live;否则,如果有旧任务清除队列,可能会导致新任务被丢弃。

您可以使用

进行设置
rabbitmqctl set_policy TTL ".*" '{"message-ttl":60000}' --apply-to queues

,您的队列现在将丢弃早于1分钟的任务。

也就是说,RMQ中有一个purge命令,您可以只调用一个计时器。 https://rabbitmq.github.io/rabbitmq-java-client/api/current/com/rabbitmq/client/AMQP.Queue.html

答案 1 :(得分:1)

您可以为任务设置time_limit,以在一定时间后将其杀死。 Celery Time Limits

@app.task(time_limit=60)
def long_running_task():
    ...