web-dev-qa-db-ja.com

Django Celeryアプリケーション-celeryエラーという名前のモジュールがありません

次のチュートリアルのように、Django-celeryアプリケーションを作成しました。

http://docs.celeryproject.org/en/master/Django/first-steps-with-Django.html

次のようにアプリケーションパラメータなしで実行すると、すべて正常に動作します。

$ python manage.py celery worker -l info

しかし、次のように、アプリケーションパラメータでそれを開始することはできません。

$ python manage.py celery worker -A myapp -l info

ここで、myappは、プロジェクトを作成したときにアプリケーションに付けられた名前です。

$ python manage.py startapp myapp

私が得ているエラーは次のとおりです。

ImportError: No module named celery

なぜこれが起こるのか、そしてそれを解決する方法を誰かが知っていますか?

8
Clara

2014年4月の編集:

Celeryのドキュメントが3.1用に更新されました。以下のソリューションは現在古くなっています。以下を参照してください。

http://docs.celeryproject.org/en/master/Django/first-steps-with-Django.html


デフォルトでは、celeryはcelery.pyという名前のモジュールを検索してその構成を見つけます。 celery.pyとは異なる名前を使用するようにセロリを取得するには、 アプリの引数にあります -を指定します。この例では、settings.pyでセロリの構成を検索します。

python manage.py celery worker --app=myapp.settings

Django-celeryを使用する場合は、上記の呼び出しを使用してセロリを開始するか、最初に行ったように実行して、アプリケーションパッケージmyappcelery.pyを作成します。

from settings import celery

私のDjango settings.pyには通常のセロリ設定が含まれています:

from celery import Celery

celery = Celery(broker="amqp://guest:[email protected]:5672//")

celery.conf.update(
    CELERY_DEFAULT_QUEUE = "myapp",
    CELERY_DEFAULT_EXCHANGE = "myapp",
    CELERY_DEFAULT_EXCHANGE_TYPE = "direct",
    CELERY_DEFAULT_ROUTING_KEY = "myapp",
)

次に、次のようにセロリワーカーを実行します。

python manage.py celery worker --app=myapp

わかりやすくするために、これが私の完全なアプリケーション構造です。

myproject/
    manage.py
    myapp/
        __init__.py
        settings.py
        celery.py
14
mafrosis

セロリモジュールにアクセスできるディレクトリからセロリワーカーを起動しようとしていることを確認してください。私の場合、プロジェクトではなくアプリディレクトリからワーカーを起動しようとしていました。

0
Raj