2010-07-23 76 views
13

我有一個Django項目,它使用Celery來運行異步任務。我正在Windows XP機器上進行開發。celery-django找不到設置

開始我的Django的服務器(python manage.py runserver 80)工作正常,但嘗試啓動芹菜守護進程(python manage.py celeryd start)失敗,出現以下錯誤:

導入錯誤:無法導入設置「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的問題。使用- 設置變元ala python manage.py celeryd start --settings=settings做了訣竅。

+1

很好的答案!我在Windows上有與多處理和Django相同的問題,但添加--settings參數固定它。 – 2011-10-24 08:01:29

+0

這樣做解決了初始錯誤。但是,現在芹菜拋出一個異常:ImportError:沒有名爲evertabs的模塊 - evertabs是我的項目名稱。 – 2012-02-12 21:00:58

0

sys.path中必須包括 'C:\研發\ SpaceCorps' 而不是 'C:\研發\ SpaceCorps \ src' 中, 因爲他正在尋找src.settings,而不僅僅是設置。

+2

這很有道理,但爲什麼Django服務器沒有錯誤地運行?我從同一個目錄(src)運行這兩個命令,並且sys.path值是相同的。 – MikeWyatt 2010-07-24 00:30:09