2014-05-12 132 views
0

當我與一名celery worker -A myapp -l info的工人一起運行芹菜時,一切都很好,任務執行。瞭解芹菜和芹菜的區別?

但是當我在同一個目錄下運行celery multi start 2 -Q:1 message_send -Q:2 message_manager時,我收到'收到的未註冊任務'錯誤。 當我運行兩名工人時,芹菜如何發現任務?

我celery.py:

# coding: utf-8 
from __future__ import absolute_import  
import os  
from celery import Celery 
from django.conf import settings  
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings.local') 

my_app = Myapp('Myapp', include=['myapp.messages.tasks']) 

my_app.config_from_object('django.conf:settings') 

my_app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 


@my_app.task(bind=True) 
def debug_task(self): 
    print('Request: {0!r}'.format(self.request)) 

我的設置:

CELERY_ROUTES = {'messages.tasks.send_message': {'queue': 'message_send'}, 
       'messages.tasks.control_message_send': {'queue': 'message_manager'}} 
CELERY_IMPORTS = ('messages.tasks') 

我的項目結構:

myapp 
    --settings 
    --messages 
    | --fixtures 
    | --migrations 
    | --tests 
    | -- __init__.py 
    | -- api.py 
    | -- tasks.py 
    | -- models.py 
    | -- views.py 
    -- __init__.py 
    -- celery.py 
    -- urls.py 
    -- utils.py 

UPDATE:問題是進口。 https://stackoverflow.com/a/23604197/1858864

回答

2

如果您使用django的芹菜,最好使用manage.py來啓動芹菜工作。有預裝的命令巫婆帶有芹菜(或Django的芹菜)

蟒蛇manage.py celeryd -Q myQueue中-E -l信息(只是一個工人)

蟒蛇manage.py celeryd_multi 1 2 Q: 1 message_send -Q:2 message_manager。

但是,如果不想使用django命令,您應該使用像這樣命名的工作器啓動芹菜多。

芹菜多重啓動1 2 -Q:1 message_send -Q:2 message_manager其中1和2是工人。

更多信息用戶芹菜多 - 幫助

+0

謝謝!問題出在進口和芹菜運行字符串。 – Paul