我如何定期清除芹菜队列,例如在队列中还有未完成的任务之后每分钟清除一次,那么我需要在一分钟后清除所有这些任务。
我该怎么做?
答案 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():
...