Django-fr

Forum

#1 27-06-2014 13:51:43

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Django et Celery

Bonjour,

Je ne sais pas si ce message a bien sa place dans ce forum, mais je suis à peu près sûr que pas mal de gens de ce forum auront un jour avoir quelque chose à faire avec Celery.
J'ai donc installé Celery avec Redis, le serveur redis fonctionne bien, je l'ai testé etc...

Mon arborescence de répertoires est la suivante :

/modules
           /tasks --> module de test Celery
           /celery --> module Celery
/mmb --> projet django
/redis-stable --> emplacement du serveur qui écoute sur le port 13950



Le fichier tasks.py

from __future__ import absolute_import

from celery import Celery

app = Celery('tasks', broker='redis://localhost:13790/0', backend='redis://localhost:13790/0')
#commande : ./modules/celery -A /home/geomusic/mmb/geomusic/tasks worker --loglevel=info

@app.task
def add(x, y):
    return x + y

commande

/modules$  ./celery -A tasks worker -B

L'erreur retournée

ImportError: No module named celery

Pourtant lorsque je lance un shell python, import celery ce passe bien

voilà, si quelqu'un a déjà rencontré ce problème, merci

Hors ligne

#2 30-06-2014 09:27:56

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Django et Celery

Tu as manifestement un problème avec tes chemins Python.
Il faut savoir que l'interpréteur Python met systématiquement le répertoire courant dans son path, ce qui n'est pas le cas quand tu lances celery. Regarde du coté du PYTHONPATH.

Hors ligne

#3 01-07-2014 11:47:25

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Django et Celery

Il me semble que j'ai pourtant tout dans mon PYTHONPATH, là j'avoue ne pas comprendre.
Je ne sais pas trop comment fonctionne celery, mais dans mon cas, j'ai tout mis dans le répertoire "modules". Lorsque j'exécute le shell python, tout semble s'importer correctement.
Dans mon pythonpath, j'ai bien le chemin vers "modules", comment tester ce problème d'import ?

Merci pour la réponse

Hors ligne

#4 01-07-2014 14:34:31

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Django et Celery

fais-toi un fichier qui import celery et lance-le pour voir si déjà celery peut être importé.
Tu pourras voir le path d'import via:
import sys; print(sys.path)

Hors ligne

#5 09-07-2014 12:30:32

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Django et Celery

donc, Je me suis bien fait un import de celery via un fichier en .py et rien n'y fait.

Je cherche toujours mais cela me bloque bien dans mes développements...
Je pense que le problème viens de ma commande, qu'en pensez-vous ?
Si vous avez d'autres idées..

Hors ligne

#6 09-07-2014 18:26:40

Jaals
Membre
Inscription : 19-07-2013
Messages : 14

Re : Django et Celery

Salut,

Je n'ai pas de solution à ton problème en particulier. Cependant j'ai suivi avec succès le tutorial First steps with Django.
Au cas où tu serais passé à côté...

++

Hors ligne

#7 11-07-2014 08:57:40

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Django et Celery

@Jaals : Merci pour le lien, mais je souhaite faire fonctionner celery avec redis de manière extérieure à django car cela offre plus de possibilités.

Je vais continuer mes investigations, je vous tiens au courant.

Merci

Hors ligne

#8 06-08-2014 09:41:30

EthPyth
Membre
Inscription : 22-08-2013
Messages : 7

Re : Django et Celery

Des news Torrak?

Je suis intéressé par cette manière de faire car pour le moment je gère Celery avec Django puisque ça se combine avec une application.

Question conne mais as-tu bien installé Celery?

pip install Celery

Moi j'ai transport:   redis://localhost:6379// dans Django

from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379//')

@app.task
def add(x, y):
    return x + y

Sinon peut être que cette réponse t'aidera http://stackoverflow.com/a/21066694/3847751

Hors ligne

#9 27-08-2014 14:26:29

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Django et Celery

Re bonjour à tous,

Je reviens encore avec mon problème de configuration celery

J'ai trouvé un tutoriel très clair sur le manière d'installer celery avec redis :

http://michal.karzynski.pl/blog/2014/05 … ery-redis/

J'ai bien suivi toutes les étapes et adapté mon code en fonction de ma configuration. Mais lorsque je lance la commande :

/modules/celery --app=celery_v1:app worker --loglevel=INFO

J'ai l'erreur suivante :

from django.conf import settings
ImportError: No module named django.conf

qui est situé dans le fichier celery_v1.py

from __future__ import absolute_import

import os
from celery import Celery
from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mmb.settings')

app = Celery('mmb')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

Pourtant lorsque j'importe django.conf dans le shell tout s'importe correctement...

Serais-je allergique au Celery ?

Hors ligne

#10 28-08-2014 08:58:09

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Django et Celery

Re bonjour,

j'ai oublié de vous dire, quelque chose d'encore plus étrange...

Lorsque j'exécute mon fichier celery_v1.py tout se passe normalement, aucun problème.
Du coup si l'on essaye de comprendre ce problème, j'en suis a pensé que cela viens de la commande "celery" qui doit s'exécuter sur une mauvaise version de python.

bref j'y comprend rien

existe t'il une commande de test pour la ligne de commande celery ?

Merci

Hors ligne

Pied de page des forums