25

コマンドラインからCeleryワーカーサーバーを起動しようとしています:

celery -A tasks worker --loglevel=info

tasks.py のコード:

import os
os.environ[ 'DJANGO_SETTINGS_MODULE' ] = "proj.settings"

from celery import task

@task()
def add_photos_task( lad_id ):
...

次のエラーが表示されます。

Traceback (most recent call last):
  File "/usr/local/bin/celery", line 8, in <module>
    load_entry_point('celery==3.0.12', 'console_scripts', 'celery')()
  File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/__main__.py", line 14, in main
    main()
  File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/celery.py", line 946, in main
    cmd.execute_from_commandline(argv)
  File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/celery.py", line 890, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/base.py", line 177, in execute_from_commandline
    argv = self.setup_app_from_commandline(argv)
  File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/base.py", line 295, in setup_app_from_commandline
    self.app = self.find_app(app)
  File "/usr/local/lib/python2.7/site-packages/celery-3.0.12-py2.7.egg/celery/bin/base.py", line 313, in find_app
    return sym.celery
AttributeError: 'module' object has no attribute 'celery'

「セロリ」属性が見つからない理由を知っている人はいますか? ご協力ありがとう御座います。

オペレーティング システムは Linux Debian 5 です。

編集します。手がかりになるかもしれません。関数への次のコメントを誰か説明してもらえますか (現在のディレクトリでモジュールが見つかることを確認する必要があるのはなぜですか)。

# from celery/utils/imports.py
def import_from_cwd(module, imp=None, package=None):
    """Import module, but make sure it finds modules
    located in the current directory.

    Modules located in the current directory has
    precedence over modules located in `sys.path`.
    """
    if imp is None:
        imp = importlib.import_module
    with cwd_in_path():
        return imp(module, package=package)
4

6 に答える 6

26

tasks.pyでセロリオブジェクトを作成するのを忘れました:

from celery import Celery
from celery import task  

celery = Celery('tasks', broker='amqp://guest@localhost//') #!

import os

os.environ[ 'DJANGO_SETTINGS_MODULE' ] = "proj.settings"

@task()
def add_photos_task( lad_id ):
...

その後、通常はタスクを開始できます。

celery -A tasks worker --loglevel=info
于 2012-11-26T16:36:41.233 に答える
12

Celery はcelery、アプリの構成を保存するためにファイルを使用します。タスクを含む Python ファイルを指定して、celery を開始することはできません。ファイルを定義する必要がありceleryます (Celery>3.0 の場合、以前はそうでしたceleryconfig.py)。

celeryd --app app.celery -l 情報

この例では、設定ファイルを使用してセロリを起動する方法を示していますapp/celery.py

セロリ ファイルの例を次に示します: https://github.com/Kami/libcloud-sandbox/blob/master/celeryconfig.py

于 2012-11-26T16:01:56.457 に答える