Estoy tratando de usar MongoDB como cola de mensajes para Apio (en una aplicación de Django). Se supone que la versión de desarrollo actual de Aplery (2.2.0rc2) te permite hacer esto, pero parece que no puedo conseguir que ningún empleado elija las tareas que estoy creando.Usando MongoDB como cola de mensajes para Apio
Versiones: apio v2.2.0rc3
mongodb 1.6.5
pymongo 1,9
django-apio 2.2.0rc2
En la configuración de mi, que tengo:
CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
# Shouldn't need these - defaults are correct.
"host": "localhost",
"port": 27017,
"database": "celery",
"taskmeta_collection": "messages",
}
BROKER_BACKEND = 'mongodb'
BROKER_HOST = "localhost"
BROKER_PORT = 27017
BROKER_USER = ""
BROKER_PASSWORD = ""
BROKER_VHOST = ""
import djcelery
djcelery.setup_loader()
I' he creado un archivo task.py de prueba de la siguiente manera:
from celery.decorators import task
@task()
def add(x, y):
return x + y
Si enciendes apicalmente en el fondo, parece comenzar normalmente. Luego, abro un shell python y ejecuto lo siguiente:
>>> from myapp.tasks import add
>>> result = add.delay(5,5)
>>> result
<AsyncResult: 7174368d-288b-4abe-a6d7-aeba987fa886>
>>> result.ready()
False
El problema es que ningún trabajador retoma las tareas. ¿Me estoy perdiendo un escenario o algo así? ¿Cómo apunto apio a la cola de mensajes?
¿La aplicación está en aplicaciones instaladas? ¿Qué es el apio que regresa en sus registros en todo caso? Una razón común por la cual .ready() devolverá False cuando en realidad no debería ser porque las tareas no se reconocen, Celery dirá algo así como "Tarea desconocida ignorada: ...." – Bartek
¿Alguna vez lo hiciste funcionar? Estoy teniendo el mismo problema – Nathan
No lo hice, desafortunadamente. – Joe