2011-01-21 4 views
16

/home/myuser/mysite-env/lib/python2.6/site-packages/celery/loaders/default.py:53: notconfigured: Aucun module celeryconfig.py trouvé! S'il vous plaît assurez-vous qu'il existe et est disponible pour Python.
NotConfigured)Pourquoi ne trouve-t-il pas mon fichier de configuration de céleri?

J'ai même défini dans/etc/profile et aussi dans mon environnement virtuel de "activer". Mais ça ne le lit pas.

+1

question stupide ... (parce que je l'ai fait) quand python exécute est-il en cours d'exécution de la version correcte. J'ai travaillé sur des systèmes avec 2 versions de python ... ne demandez pas. –

Répondre

2

Assurez-vous que celeryconfig.py se trouve au même emplacement que celeryd ou assurez-vous qu'il est disponible sur le chemin Python.

20

J'ai eu un problème similaire avec mon module de tâches. Un

simple,
# celery config is in a non-standard location 
import os 
os.environ['CELERY_CONFIG_MODULE'] = 'mypackage.celeryconfig' 

dans mon paquet __init__.py résolu ce problème.

+0

Comme recommandé dans [les recommandations de Celery pour Django] (http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html), 'os.environ.setdefault ('DJANGO_SETTINGS_MODULE', ' proj.settings ') 'dans le fichier de configuration de céleri avant que' app = Celery (' tasks ') 'soit appelé fonctionne bien, surtout si vous souhaitez mettre à jour votre fichier de paramètres plus tard. – cloudrave

2

vous pouvez contourner ce avec l'environnement ... ou, utilisez --config: il faut

  1. un chemin relatif à CELERY_CHDIR de/etc/defaults/celeryd
  2. un nom de module python, pas un nom de fichier.

Le message d'erreur pourrait probablement utiliser ces deux faits.

7

maintenant à Céleri 4.1 vous pouvez résoudre ce problème par ce code (le plus facile):

import celeryconfig 

from celery import Celery 

app = Celery() 
app.config_from_object(celeryconfig) 

Par exemple petite celeryconfig.py:


façon aussi très simple:

from celery import Celery 

app = Celery('tasks') 

app.conf.update(
    result_expires=60, 
    task_acks_late=True, 
    broker_url='pyamqp://', 
    result_backend='redis://localhost' 
) 

ou en utilisant une classe de configuration/objet:

from celery import Celery 

app = Celery() 

class Config: 
    enable_utc = True 
    timezone = 'Europe/London' 

app.config_from_object(Config) 
# or using the fully qualified name of the object: 
# app.config_from_object('module:Config') 

Ou comment il a été mentionné par la mise CELERY_CONFIG_MODULE

import os 
from celery import Celery 

#: Set default configuration module name 
os.environ.setdefault('CELERY_CONFIG_MODULE', 'celeryconfig') 

app = Celery() 
app.config_from_envvar('CELERY_CONFIG_MODULE') 

Voir aussi:

+0

Comment le faire quand vous avez juste le nom de fichier? /path/to/filename.py – 010110110101

+0

@ 010110110101 La première option semble être la bonne pour vous. Voir dans la réponse, j'ai ajouté quelques explications pour la première option. Si ce n'est pas clair, je suis prêt à aider. –

Questions connexes