私は次の場所にあるrunserverで問題なく実行されるdjangoプロジェクトを持っています:
D:\EverTabs\work\evertabs-website\src\evertabs\
私のsettings.pyとmanage.pyは上記のパスにあります。
信頼できるcmdシェルを開き、そのディレクトリにcdして実行するmanage.py celeryd
と、次のエラーで例外が発生します。
ImportError: Could not import settings 'evertabs.settings' (Is it on sys.path?): No module named evertabs.settings
けっこうだ。GoogleとStackOverflowが助けになり、答えが見つかりました。コマンドに提供する必要があります--settings=settings
。runserverは必要ないので奇妙ですが--settings=settings
、それは人生です。私は妥協するつもりです。エラーが発生し続けます:
Traceback (most recent call last):
File "C:\Progra~1\Python26\lib\multiprocessing\process.py", line 231, in _bootstrap
self.run()
File "C:\Progra~1\Python26\lib\multiprocessing\process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "c:\program files\python26\lib\site-packages\celery-2.4.6-py2.6.egg\celery\concurrency\processes\pool.py", line 173, in worker
initializer(*initargs)
File "c:\program files\python26\lib\site-packages\celery-2.4.6-py2.6.egg\celery\worker\__init__.py", line 64, in process_initializer
app.loader.init_worker()
File "c:\program files\python26\lib\site-packages\celery-2.4.6-py2.6.egg\celery\loaders\base.py", line 100, in init_worker
self.on_worker_init()
File "c:\program files\python26\lib\site-packages\django_celery-2.4.2-py2.6.egg\djcelery\loaders.py", line 92, in on_worker_init
autodiscover()
File "c:\program files\python26\lib\site-packages\django_celery-2.4.2-py2.6.egg\djcelery\loaders.py", line 114, in autodiscover
for app in settings.INSTALLED_APPS])
File "c:\program files\python26\lib\site-packages\django_celery-2.4.2-py2.6.egg\djcelery\loaders.py", line 124, in find_related_module
app_path = importlib.import_module(app).__path__
File "build\bdist.win32\egg\importlib\__init__.py", line 37, in import_module
ImportError: No module named evertabs
だから私は頭を激しく引っ掻いて、この男に別のpythonpathを与えると、彼はうまく配置されるかもしれないと決めました。私の次の試みは:
manage.py celeryd --pythonpath=D:\EverTabs\work\evertabs-website\src\
今、私たちはどこかに到達しています!エラーはありません。ただし、settings.pyと同じディレクトリにある私のceleryconfig.pyは処理されません。私のタスクはどれもロードされていません。構文エラーをceleryconfg.pyに入れて、ロードされていないことを証明しました。
次のステップは、django1.4のmanage.pyを使用することでした。このmanage.pyは、D:\EverTabs\work\evertabs-website\src\
ではなくに配置されD:\EverTabs\work\evertabs-website\src\evertabs\
ます。この時点で、単純な構文でcelerydを実行でき、pythonpathに追加する必要はありません。それでも、私のceleryconfig.pyは変更されていません。
D:\EverTabs\work\evertabs-website\src>manage.py celeryd
さらなる調査によると、tasks.pyをトップレベルのディレクトリ9に追加すると、setting.pyが配置されます)。セロリはそれらを自動発見します。これはうまくいきました。ただし、celeryconfig.pyはまだ処理されていないため、そこでより複雑な構成を行うことはできません。今のところ、私のタスクが最終的に見つかったので、これは問題ではありません。ただし、celeryconfig.pyが処理されていないのは非常に気になります。
結局、現代のセロリがceleryconfig.pyを探していないのではないかと今私は気づいています。これらの設定をsettings.pyに入れるだけで、セロリがそれらを取得します。物事は良く見え始めています。