我已经覆盖了芹菜默认队列。以下是提到的设置。
BROKER_URL = "amqp://managedbrokerurl/username/"
CELERY_DEFAULT_QUEUE = 'project.env.default'
CELERY_ROUTES = {"app1.tasks.push_api_task": {"queue": "project.env.priority_queue"}}
python manage.py celery worker -n env_worker -Q project.env.default
python manage.py celery worker -n env_worker -Q project.env.priority_queue
根据配置,我期望除app1.tasks.push_api_task
之外的所有任务都应该进入队列project.env.default
。
但是一些奇怪的问题正在发生,例如任务进入project.env.default
队列以及celery
队列(如果没有被覆盖则是默认队列)。
我检查了我们的代码库,我们没有使用celery
队列进行任务发布。
如果你们遇到同样的问题,请帮忙。
答案 0 :(得分:2)
我知道这是一个很晚的响应,但是如果人们仍然遇到此问题,则问题出在Celery的一些较早的文档上。在某些文档中错误地给出了变量CELERY_DEFAULT_QUEUE
,该变量应为CELERY_TASK_DEFAULT_QUEUE
答案 1 :(得分:0)
工作者实例可以使用任意数量的队列。默认情况下 将使用CELERY_QUEUES设置中定义的所有队列 (如果未指定,则默认为名为celery的队列)
我认为你应该看到a section of celery docs
您还可以在同一台计算机上启动多个工作程序。如果你这样做 请务必通过指定为每个工作人员提供唯一的名称 带有--hostname | -n参数的主机名: