【发布时间】:2020-08-17 23:51:03
【问题描述】:
我正在尝试为 RabbitMQ 中的两个队列分配优先级,以便我的工作人员在从 Queue2 消费之前总是先消费并清除 Queue1 中的所有消息。我使用了一个名为 celeryconfig.py 的 celery 配置文件,如下所示:
import ssl
broker_url="amqps://USR:PWD@URL//"
result_backend="db+postgresql://USR:PWD@BURL?sslmode=verify-full&sslrootcert=/usr/local/share/ca-certificates/MY_CACERT.crt"
include=["my_tasks"]
task_acks_late=True
task_default_rate_limit="150/m"
task_time_limit=300
worker_prefetch_multiplier=1
worker_max_tasks_per_child=2
timezone="UTC"
broker_use_ssl = {'keyfile': '/usr/local/share/private/MY_KEY.key', 'certfile': '/usr/local/share/ca-certificates/MY_CERT.crt', 'ca_certs': '/usr/local/share/ca-certificates/MY_CACERT.crt', 'cert_reqs': ssl.CERT_REQUIRED, 'ssl_version': ssl.PROTOCOL_TLSv1_2}
目前我只有 1 个队列,这就是我开始芹菜工人的方式
celery -A celery_app worker -l info --config celeryconfig --concurrency=16 -n "%h:celery-worker" -O fair
我在这里阅读了简短的文档https://docs.celeryproject.org/en/v4.3.0/userguide/routing.html#routing-options-rabbitmq-priorities,但它只提到设置 max 优先级,并没有告诉我如何为 RabbitMQ 中的每个单独队列设置优先级。
- RabbitMQ:3.7.17
- 芹菜:4.3.0
- Python:3.6.7
- 操作系统:Ubuntu 18.04.3 LTS 仿生
有人可以解释一下吗?谢谢
【问题讨论】:
标签: python-3.x rabbitmq celery priority-queue