通过队列设置Celery时间限制

问题描述 投票:0回答:2

我有一个使用 Celery 的项目,最初实现了一个独特的队列,这可能会引起一些麻烦。

所以我想实现几个队列(已完成且有效),但我想为每个队列设置不同的软时间限制。实际上我发现的唯一的东西是 time_limit 作为 Celery 的全局设置,或者每次装饰任务时设置它。第一个是太通用的解决方案,第二个还不够。

谢谢

python celery
2个回答
2
投票

在队列定义过程中,您可以设置生存时间

x-message-ttl

 Queue('test_queue', Exchange('default'), routing_key='test_queue', queue_arguments={'x-message-ttl': 86400000})

0
投票

您可以将任务路由到队列并设置每个 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
© www.soinside.com 2019 - 2024. All rights reserved.