我有一个使用 Celery 的项目,最初实现了一个独特的队列,这可能会引起一些麻烦。
所以我想实现几个队列(已完成且有效),但我想为每个队列设置不同的软时间限制。实际上我发现的唯一的东西是 time_limit 作为 Celery 的全局设置,或者每次装饰任务时设置它。第一个是太通用的解决方案,第二个还不够。
谢谢
在队列定义过程中,您可以设置生存时间
x-message-ttl
。
Queue('test_queue', Exchange('default'), routing_key='test_queue', queue_arguments={'x-message-ttl': 86400000})
您可以将任务路由到队列并设置每个 Worker 的时间限制:
# in your config
task_routes = {
"<YOUR_MODULE>.*": {"queue": "<QUEUE>"},
...
}
# cli
celery -A <YOUR_APP> worker \
--task-events \
--loglevel=INFO \
--queues <QUEUE>,default \
--soft-time-limit 5