task_routes imports celeryd_task_soft_time_limit celery_result_backend backend_cleanup python celery

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.