J'ai besoin dans mon projet django d'exécuter de longues tâches. Désiré d'utiliser le céleri avec Redis comme courtier. Redis installé fonctionne:Tâches asynchrones de céleri dans le projet django. Comment ça marche?
Le serveur est maintenant prêt à accepter les connexions sur le port 6379
Que installer django-céleri, configurer:
import djcelery
djcelery.setup_loader()
BROKER_HOST = "localhost"
BROKER_PORT = 6379 #redis
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"
et l'exécuter:
python manage.py celeryd -l DEBUG
[...]
[2011-06-18 10:31:37,913: DEBUG/MainProcess] Starting thread Timer...
[2011-06-18 10:31:37,914: DEBUG/MainProcess] Starting thread Consumer...
[2011-06-18 10:31:37,914: WARNING/MainProcess] [email protected] has started.
[2011-06-18 10:31:37,914: DEBUG/MainProcess] Consumer: Re-establishing connection to the broker...
mon exemple de tâche ressemble à:
from celery.decorators import task
@task()
def add(x, y):
return x + y
maintenant j'essaie de le lancer dans la coquille:
In [3]: from message.tasks import add
In [4]: r=add.delay(2, 5)
il attendre très longtemps et rendre Traceback http://dpaste.com/555939/. Qu'est-ce que ça peut être? Peut-être que je manque quelque chose?
Le problème était que je courais shell comme: > python manage.py shell – greg
Ah, oui, vous ne pouvez exécuter le céleri à partir d'un fichier dans votre application Django en effet, aurait dû remarquer que :) – fijter