2010-07-23 4 views
13

J'ai un projet Django qui utilise Celery pour exécuter des tâches asynchrones. Je fais mon développement sur une machine Windows XP.celery-django ne trouve pas les paramètres

À partir de mon serveur Django (python manage.py runserver 80) fonctionne très bien, mais en essayant de lancer le daemon Céleri (python manage.py celeryd start) échoue avec l'erreur suivante:

ImportError: Impossible d'importer des paramètres de src.settings '(Est-il sur sys.path a-t-il des erreurs de syntaxe?): Aucun module nommé src.settings

sys.path inclut 'C: \ development \ SpaceCorps \ src', donc je ne sais pas pourquoi il ne peut pas trouver ce module.

Voici la sortie complète de démarrage du démon:

C:\development\SpaceCorps\src>python manage.py celeryd start 
[2010-07-23 18:29:31,456: WARNING/MainProcess] ?[1;[email protected] v2.0.1 is starting.?[0m 
[2010-07-23 18:29:31,456: WARNING/MainProcess] ?[1;33mC:\Program Files\Python26\lib\site-packages\celery-2.0.1-py2.6.egg\celery\bin\celeryd.py:206: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in a production environment! 
    warnings.warn("Using settings.DEBUG leads to a memory leak, "?[0m 
[2010-07-23 18:29:31,456: WARNING/MainProcess] ?[1;33mConfiguration -> 
    . broker -> amqp://[email protected]:5672/ 
    . queues -> 
    . celery -> exchange:celery (direct) binding:celery 
    . concurrency -> 2 
    . loader -> djcelery.loaders.DjangoLoader 
    . logfile -> [stderr]@WARNING 
    . events -> OFF 
    . beat -> OFF?[0m 
[2010-07-23 18:29:31,706: WARNING/MainProcess] ?[1;[email protected] has started.?[0m 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "C:\Program Files\Python26\lib\multiprocessing\forking.py", line 342, in main 
    self = load(from_parent) 
    File "C:\Program Files\Python26\lib\pickle.py", line 1370, in load 
    return Unpickler(file).load() 
    File "C:\Program Files\Python26\lib\pickle.py", line 858, in load 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    dispatch[key](self) 
    File "C:\Program Files\Python26\lib\pickle.py", line 1090, in load_global 
    File "C:\Program Files\Python26\lib\multiprocessing\forking.py", line 342, in main 
    self = load(from_parent) 
    File "C:\Program Files\Python26\lib\pickle.py", line 1370, in load 
    klass = self.find_class(module, name) 
    File "C:\Program Files\Python26\lib\pickle.py", line 1124, in find_class 
    return Unpickler(file).load() 
    File "C:\Program Files\Python26\lib\pickle.py", line 858, in load 
    dispatch[key](self) 
    File "C:\Program Files\Python26\lib\pickle.py", line 1090, in load_global 
    __import__(module) 
    File "C:\Program Files\Python26\lib\site-packages\celery-2.0.1-py2.6.egg\celery\concurrency\processes\__init__.py", line 7, in <module> 
    from celery import log 
    File "C:\Program Files\Python26\lib\site-packages\celery-2.0.1-py2.6.egg\celery\log.py", line 8, in <module> 
    from celery import conf 
    File "C:\Program Files\Python26\lib\site-packages\celery-2.0.1-py2.6.egg\celery\conf.py", line 118, in <module> 
    ALWAYS_EAGER = _get("CELERY_ALWAYS_EAGER") 
    File "C:\Program Files\Python26\lib\site-packages\celery-2.0.1-py2.6.egg\celery\conf.py", line 109, in _get 
    value = getattr(settings, alias) 
    File "c:\development\django\django\utils\functional.py", line 276, in __getattr__ 
    self._setup() 
    File "c:\development\django\django\conf\__init__.py", line 40, in _setup 
    self._wrapped = Settings(settings_module) 
    File "c:\development\django\django\conf\__init__.py", line 75, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'src.settings' (Is it on sys.path? Does it have syntax errors?): No module named src.settings 

Répondre

19

Apparemment, ceci est un problème avec running Celery on Windows. En utilisant le --settings argument ala python manage.py celeryd start --settings=settings fait l'affaire.

+1

Bonne réponse! J'ai eu le même problème sur Windows avec multi-traitement et Django, mais en ajoutant le paramètre --settings l'a corrigé. –

+0

Cela a résolu l'erreur initiale. Cependant, maintenant celeryd jette une exception: ImportError: Aucun module nommé evertabs - evertabs est le nom de mon projet. –

0

sys.path doit inclure 'C: \ développement \ de' non 'C: \ développement \ SpaceCorps \ src', parce qu'il cherche src.settings, pas seulement les paramètres.

+2

Cela a du sens, mais pourquoi le serveur Django fonctionne-t-il sans erreur? J'exécute les deux commandes du même répertoire (src), et les valeurs sys.path sont les mêmes. – MikeWyatt

Questions connexes