我在芹菜中有两个队列和一个带有任务的tasks.py。当我用
运行芹菜时celery worker -A myapp -l info -Q messages1
celery worker -A myapp -l info -Q messages2
在两个不同的终端,它工作得很好,并运行我的所有任务。
但是如果我碰到
celery multi start 2 -Q:1 messages1 -Q:2 messages2 --loglevel=DEBUG
得到[2014-05-08 15:30:33,020: ERROR/MainProcess] Received unregistered task of type
。我做错了什么?
UPDATE:我发现
celery worker -A myapp -l info -Q messages1
celery worker -A myapp -l info -Q messages2
实际上运行一个worker。当我为每个worker指定-n参数时:
celery worker -A myapp -l info -Q messages1 -n w1
celery worker -A myapp -l info -Q messages2 -n w2
我也有同样的问题:
[2014-05-08 16:51:05,329: ERROR/MainProcess] Received unregistered task of type
更新1:我已经有了下面这行:
CELERY_ROUTES = {'messages.tasks.send_message': {'queue': 'message_send'}, 'messages.tasks.control_message_send': {'queue': 'message_manager'}}.
似乎没有效果。我像这样运行task:
result = send_message.apply_async(('number', 'message text'), queue='message_send').
问题分两步解决:
1)芹菜multi的正确运行字符串为celery multi start 2 -Q:1 messages1 -Q:2 messages2 --loglevel=DEBUG -A myapp
2)我忘记在__init__.py
中导入我的应用程序:
`from __future__ import absolute_import
from myapp.celery_app import celery_app as celery_app`
日志信息中的这个链接非常有用。http://docs.celeryq.org/en/latest/userguide/tasks.html任务名称