Запуск задач сельдерея в cherrypy

я создаю спокойный интерфейс с помощью cherrypy, и мне нужно запустить некоторые задачи сельдерея, но, похоже, это не работает, и я понятия не имею, почему?

Может быть кто-то сталкивался с таким.

Итак, у меня есть celeryconfig.py

CELERY_RESULT_BACKEND = "database"
CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite" 
CELERY_IMPORTS = ("tasks", ) 
CELERY_RESULT_ENGINE_OPTIONS = {"echo": True} 
BROKER_TRANSPORT = "sqlalchemy" 
BROKER_HOST = "sqlite:///celerydb.sqlite"

И tasks.py

from celery.task import task

@task
def create_agent(agent_id):
    print ("do something")

я запускаю сельдерей

celeryd -l INFO     

Также у меня есть обработчик запросов (CherryPy)

class Resource(object):
    def POST(self):
        create_agent.delay(1)

Я могу вызвать задачу create_agent.delay(1) из консоли Python, и работник сельдерея получает задачу и работает.

И более. Я использую питон3.2


person Yuriy Ovcharenko    schedule 14.02.2012    source источник


Ответы (1)


Если вы запустите celeryd в режиме отладки (celeryd -l debug), вы должны получить подсказку:

[2012-02-15 09:34:35,484: ERROR/MainProcess] Received unregistered task of type 'default.create_agent'.
The message has been ignored and discarded.

Did you remember to import the module containing this task?
Or maybe you are using relative imports?
Please see http://bit.ly/gLye1c for more information.

(Для справки в будущем запустите celeryd в режиме debug, когда у вас возникнут подобные проблемы; info мало что вам скажет.)

Этот URL-адрес bit.ly указывает на это: http://ask.github.com/celery/userguide/tasks.html#automatic-naming-and-relative-imports

Вы сможете устранить эту ошибку, изменив декоратор на это: @task(name='tasks.create_agent')

Я использую Python 2.7 и сельдерей 2.3.1. Я смог воспроизвести вашу проблему, и указанное выше исправление сработало для меня.

Надеюсь, это поможет.

person larsbutler    schedule 15.02.2012
comment
Это была очень глупая ситуация. Я запускаю команду celeryd -l info, которая не содержит файла celeryconfig.py. Я только что сделал cd ./src и celeryd -l info, и это сработало как шарм. Спасибо за помощь. - person Yuriy Ovcharenko; 24.02.2012