2013-04-03 3 views
2

tasks.py:незарегистрированной задача сельдерей

from celery import Celery 
from django.http import HttpResponse 
from anyjson import serialize 

celery = Celery('tasks', broker='amqp://[email protected]//') 

#@celery.task 
def add(request): 
    x = int(request.GET['x']) 
    y = int(request.GET['y']) 
    result = x+y 
    response = {'status': 'success', 'retval': result} 
    return HttpResponse(serialize(response), mimetype='application/json') 

после начала рабочего, я попытался HTTP диспетчер:

from celery.task.http import URL 
res = URL('http://localhost/add').get_async(x=10, y=10) 
res.state 
'PENDING' 

и получил ошибку, как, [2013-04-03 06:39 : 54,791: ERROR/MainProcess] Получена незарегистрированная задача типа u'celery.task.http.HttpDispatchTask '. Сообщение было проигнорировано и отброшено.

Вы не забыли импортировать модуль, содержащий эту задачу? Или, может быть, вы используете относительный импорт? Подробнее: http://docs.celeryq.org/en/latest/userguide/tasks.html#names

Полное содержание тела сообщения было: {u'utc': True, u'chord': None, u'args': [u'http://localhost/add', u'GET'], u'retries': 0, u'expires': None, u'task': u'celery.task.http.HttpDispatchTask', u'callbacks': None, u'errbacks': None, u'taskset': None, u'kwargs': {u'y': 10, u'x': 10}, u'eta': None, u'id': u'29f83cc9-ba5a-4008-9d2d-6f7bb24b0cfc'} (288b)

Traceback (самый последний вызов последнего): File "/usr/local/gdp/python2.7.2/lib/python2.7/site-packages/celery-3.0.13-py2.7.egg/celery/worker/consumer.py", line 435, in on_task_received strategies[name](message, body, message.ack_log_error) KeyError: u'celery.task.http.HttpDispatchTask'

ответ

1

Извинения, если я заявляющие очевидное, но декоратор задача #@celery.task закомментирован.

Смежные вопросы