Ответ 1
По-видимому, это проблема с запуском Celery в Windows. Используя аргумент -settings ala python manage.py celeryd start --settings=settings
сделал трюк.
У меня есть проект Django, который использует Celery для запуска асинхронных задач. Я занимаюсь разработкой на компьютере под управлением Windows XP.
Запуск моего Django-сервера (python manage.py runserver 80
) работает отлично, но попытка запустить Celery Daemon (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
По-видимому, это проблема с запуском Celery в Windows. Используя аргумент -settings ala python manage.py celeryd start --settings=settings
сделал трюк.
sys.path должен включать 'C:\development\SpaceCorps' не 'C:\development\SpaceCorps\src', потому что он ищет src.settings, а не только настройки.