0

私は次の場所にある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に入れるだけで、セロリがそれらを取得します。物事は良く見え始めています。

4

2 に答える 2

1

django-celeryは、settings.pyをセロリ構成ファイルとして使用します。

他の主な違いは、構成値がceleryconfig.pyではなくDjangoプロジェクトのsettings.pyモジュールに保存されることです。

http://ask.github.com/django-celery/introduction.html

于 2012-02-13T09:13:22.120 に答える
0

セロリを機能させるために私がしたことの簡単な要約:

  1. いずれかを使用--pythonpathして、プロジェクトディレクトリの上のディレクトリをポイントし、celeryがproject.settingsをインポートできるようにするか、manage.pyを1レベル上に移動して、django1.4が生成するmanage.pyを使用します。

  2. プロジェクトのトップレベル(settings.pyが配置されている場所)にtasks.pyを作成すると、celeryがそれらを自動検出します。別のモジュールを使用する場合はCELERY_IMPORTS = ("yourproject.anothermodule", )、settings.pyに追加して、セロリがanothermoduleタスクの内部を検索するようにします。

  3. celeryconfig.pyいくつかのドキュメントに記載されていることを忘れてください。すべての設定をあなたの中に正しく置くだけですsettings.py

于 2012-02-12T23:14:44.860 に答える