如何定期清除 celery rabbitmq 中的队列?
How do I periodically purge a queue in celery rabbitmq?
我如何定期清除 celery 队列,比如在队列中有任何未完成的任务后每分钟清除一次,然后我需要在一分钟后清除所有这些任务。
我该怎么做?
如果需要超时任务,使用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
您可以设置time_limit
任务在一定时间后终止。
Celery Time Limits
@app.task(time_limit=60)
def long_running_task():
...
我如何定期清除 celery 队列,比如在队列中有任何未完成的任务后每分钟清除一次,然后我需要在一分钟后清除所有这些任务。
我该怎么做?
如果需要超时任务,使用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
您可以设置time_limit
任务在一定时间后终止。
Celery Time Limits
@app.task(time_limit=60)
def long_running_task():
...