2015-08-15 61 views
0

我已覆盖芹菜默认队列。以下是提到的设置。更改芹菜默认队列,未按预期正常工作

设置

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队列进行任务发布。

如果你们遇到同样的问题,请帮忙。

Celery Queue Screen

+2

一件事 - 你应该工人之间为'-n'使用不同的值。 – scytale

回答

0

甲工人实例可以从任何数目的队列消耗。默认情况下,它 会从CELERY_QUEUES定义的所有队列消耗设置 (如果没有指定默认命名芹菜队列)

我想你应该看到a section of celery docs

您也可以启动多个同一台机器上的工作人员。如果你这样做 务必通过指定 与--hostname主机名给一个唯一的名称,以每个个体劳动者 | -n参数:

Source

+0

我改变了建议的设置,但没有帮助我。下面是提到的设置########################芹菜设置################### #### BROKER_URL = '' CELERY_DEFAULT_QUEUE = 'env.stg.default' CELERY_QUEUES =( 队列( 'gm.stg.default', 交换( 'env.stg.default'), routing_key = 'env.stg.default'),) CELERY_DEFAULT_EXCHANGE_TYPE ='直接' –