2012-05-18 18 views
6

puedo configurar CELERY_RESULT_BACKEND = "amqp" en celeryconfig.py pero consigo:¿Cómo configuro un backend para django-apio? Me puse CELERY_RESULT_BACKEND, pero no se reconoce

>>> from tasks import add 
>>> result = add.delay(3,5) 
>>> result.ready() 

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 105, in ready 
    return self.state in self.backend.READY_STATES 
    File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 184, in state 
    return self.backend.get_status(self.task_id) 
    File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/backends/base.py", line 414, in _is_disabled 
    raise NotImplementedError("No result backend configured. " 
NotImplementedError: No result backend configured. Please see the documentation for more information. 
+0

¿Está ejecutando el shell de python desde el mismo directorio que apleryconfig.py? – mher

Respuesta

12

simplemente me fui a través de este para que pueda arrojar algo de luz sobre esto. Uno podría pensar en toda la gran documentación que indica que algo de esto habría sido un poco más obvio.

Supongo que tienes ambos RabbitMQ en funcionamiento (debe estar ejecutándose), y que tienes dj-celery instalado.

Una vez que tenga eso, entonces todo lo que necesita hacer es incluir esta única línea en su archivo setting.py.

BROKER_URL = "amqp://guest:[email protected]:5672//" 

Luego hay que ejecutar syncdb y empezar esta cosa usando:

python manage.py celeryd -E -B --loglevel=info 

Los -E estados que desea eventos capturados y el -B afirma que desea celerybeats corriendo. El primero le permite ver algo en la ventana de administración y el último le permite programar. Finalmente, debes asegurarte de que realmente vas a capturar los eventos y el estado. Por lo que en otro terminal ejecuta:

./manage.py celerycam 

Y, finalmente, el poder ver el ejemplo de trabajo proporcionado en la documentación .. - Una vez más asumiendo que creó la tasks.py que se dice.

>>> result = add.delay(4, 4) 
>>> result.ready() # returns True if the task has finished processing. 
False 
>>> result.result # task is not ready, so no return value yet. 
None 
>>> result.get() # Waits until the task is done and returns the retval. 
8 
>>> result.result # direct access to result, doesn't re-raise errors. 
8 
>>> result.successful() # returns True if the task didn't end in failure. 
True 

Además, entonces puede ver su estado en el panel de administración.

Django Task Manager

espero que esto ayude !! Agregaría una cosa más que me ayudó. Ver el archivo de registro de RabbitMQ fue clave, ya que me ayudó a identificar que django-apio realmente estaba hablando con RabbitMQ.

+0

Tenía rabbitmq corriendo y django-apio instalado, pero no tenía dijango-apio en funcionamiento. – johnlockwood

1

¿Está ejecutando el apio Django?

Si es así, debe iniciar un shell de python en el contexto de django (o cualquiera que sea el término técnico).

Tipo:

python manage.py shell 

y probar los comandos de shell que

Cuestiones relacionadas