2010-07-23 2 views
13

У меня есть проект Django, который использует Celery для выполнения асинхронных задач. Я занимаюсь разработкой на компьютере под управлением Windows XP.celery-django не может найти настройки

Начиная мой сервер Django (python manage.py runserver 80) работает нормально, но при попытке запуска сельдерей демона (python manage.py celeryd start) не со следующей ошибкой:

ImportError: Не удалось импортировать настройки «src.settings» (является ли это на sys.path? У него есть синтаксические ошибки?): Нет модуля с именем src.settings

sys.path включает в себя 'C: \ development \ SpaceCorps \ src', поэтому я не уверен, почему он не может найти этот модуль.

Вот полный выход из запуска демона:

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 

ответ

19

Видимо, это проблема с running Celery on Windows. Использование --settings аргумент ala python manage.py celeryd start --settings=settings сделал трюк.

+1

Отличный ответ! У меня была такая же проблема для Windows с многопроцессорной обработкой и Django, но добавив параметр --settings исправил ее. –

+0

Выполнение этого разрешило начальную ошибку. Однако теперь celeryd выдает исключение: ImportError: Нет модуля с именем evertabs - evertabs - это имя моего проекта. –

0

sys.path должен включать 'C: \ Разработка \ SpaceCorps' не 'C: \ развитие \ SpaceCorps \ ЦСИ', потому что он ищет src.settings, а не только настройки.

+2

Это имеет смысл, но почему сервер Django работает без ошибок? Я запускаю обе команды из одного и того же каталога (src), а значения sys.path одинаковы. – MikeWyatt

Смежные вопросы