Запуск задач сельдерея в вишневом - PullRequest
1 голос
/ 14 февраля 2012

Я создаю спокойный интерфейс с использованием 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

celeryd -l INFO     

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

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

Я могу вызвать задачу create_agent.delay (1) из консоли python, и рабочий из сельдерея получает задачу и работу, но когда create_agent.delay (1) вызывается в cherrypy (при касании соответствующего URL-адреса) работник сельдерея вообще не получает задание.

И еще.Я использую python3.2

1 Ответ

4 голосов
/ 15 февраля 2012

Если вы запускаете 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 не расскажет вам много.)

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

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

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

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

...