2017-09-15 122 views
0

芹菜任务成功执行无队列芹菜任务队列不能与rabbitmq一起工作

设置。

BROKER_URL = "amqp://user:[email protected]:5672/test" 
# Celery Data Format 
CELERY_ACCEPT_CONTENT = ['application/json'] 
CELERY_TASK_SERIALIZER = 'json' 

CELERYD_TASK_SOFT_TIME_LIMIT = 60 
CELERY_IGNORE_RESULT = True 

@app.task 
def test(a,b,c): 
    print("doing something here...") 

命令

celery worker -A proj -E -l INFO 

上面设置工人成功执行。

我已经将队列引入芹菜任务。

加入与先前设置

from kombu.entity import Exchange, Queue 

CELERY_QUEUES = (
    Queue('high', Exchange('high'), routing_key='high'), 
    Queue('normal', Exchange('normal'), routing_key='normal'), 
    Queue('low', Exchange('low'), routing_key='low'), 
) 

CELERY_DEFAULT_QUEUE = 'normal' 
CELERY_DEFAULT_EXCHANGE = 'normal' 
CELERY_DEFAULT_ROUTING_KEY = 'normal' 

CELERY_ROUTES = { 
    'myapp.tasks.test': {'queue': 'high'}, 
} 

命令

celery worker -A proj -E -l INFO -n worker.high -Q high 

呼叫

test.delay(1, 2, 3) 

当我与队列工人执行未运行的配置。我错过任何配置吗?

+0

内兔和芹菜记录任何信息? – lapinkoira

+0

我没有添加任何芹菜日志。我会添加它。我需要在rabbitmq上为芹菜配置队列名称吗? –

+0

你不必对兔子做任何事情,只要确保兔子正在运行并监听那个端口和接口,如果你在一台linux机器上并且有权访问一个shell,请运行netstat -putan | grep 5672 – lapinkoira

回答

1

变化CELERY_ROUTES在第4版

0

首先CELERY_TASK_ROUTES-变化,确保连接建立在两个兔&高的工人日志。

然后,尝试改变你的CELERY_ROUTES到:

CELERY_ROUTES = { 
    'myapp.tasks.test': { 
     'exchange': 'high', 
     'exchange_type': 'high', 
     'routing_key': 'high' 
    } 
} 

或调用任务与queue,例如:

test_task = test.signature(args=(1, 2, 3), queue='high', immutable=True) 
test_task.apply_async()