python - imports - Apio con RabbitMQ: AttributeError: el objeto ''DisabledBackend'' no tiene el atributo ''_get_task_meta_for''
celery task_routes (4)
En caso de que alguien cometió el mismo error fácil que yo: el tutorial no lo dice explícitamente, pero la línea
app = Celery(''tasks'', backend=''rpc://'', broker=''amqp://'')
es un EDIT de la línea en su archivo tasks.py
. El mío ahora dice:
app = Celery(''tasks'', backend=''rpc://'', broker=''amqp://guest@localhost//'')
Cuando ejecuto Python desde la línea de comando obtengo:
$ python
>>> from tasks import add
>>> result = add.delay(4,50)
>>> result.ready()
>>> False
Todos los tutoriales deberían ser fáciles de seguir, incluso cuando estén un poco borrachos. Hasta ahora, este no llega a ese bar.
Estoy ejecutando los Primeros Pasos con el Tutorial de Apio .
Definimos la siguiente tarea:
from celery import Celery
app = Celery(''tasks'', broker=''amqp://guest@localhost//'')
@app.task
def add(x, y):
return x + y
Entonces llámalo:
>>> from tasks import add
>>> add.delay(4, 4)
Pero me sale el siguiente error:
AttributeError: ''DisabledBackend'' object has no attribute ''_get_task_meta_for''
Estoy ejecutando tanto el trabajador de apio como el servidor de rabbit-mq. Curiosamente, el apio informa que la tarea tuvo éxito:
[2014-04-22 19:12:03,608: INFO/MainProcess] Task test_celery.add[168c7d96-e41a-41c9-80f5-50b24dcaff73] succeeded in 0.000435483998444s: 19
¿Por qué no está funcionando?
Solo sigue leyendo el tutorial. Se explicará en el capítulo Mantener resultados .
Para iniciar Celery, debe proporcionar el parámetro Just Broker, que es necesario para enviar mensajes sobre tareas. Si desea recuperar información sobre el estado y los resultados devueltos por las tareas finalizadas, debe configurar el parámetro back-end. Puede encontrar la lista completa con la descripción en Documentos de configuración: CELERY_RESULT_BACKEND .
Sugiero echar un vistazo a: http://www.cnblogs.com/fangwenyu/p/3625830.html
Ahí verá que en lugar de
app = Celery(''tasks'', broker=''amqp://guest@localhost//'')
deberías estar escribiendo
app = Celery(''tasks'', backend=''amqp'', broker=''amqp://guest@localhost//'')
Eso es todo.
en el directorio de su proyecto encuentre el archivo de configuración.
luego: sudo vim settings.py copy / paste en settings.py: CELERY_RESULT_BACKEND = ''djcelery.backends.database: DatabaseBackend''
Nota: esto es si está usando django-apio como el back-end para almacenar los mensajes en la cola.