5

私が知る限り、セロリのセットアップ方法を説明したドキュメントが 2 つあります。「ワーカーをデーモンとして実行する」と「Django の最初のステップ」があります。

Django docs では、次のように述べています。

また、Celery の構成ソースとして Django 設定モジュールを追加します。これは、複数の構成ファイルを使用する必要がなく、代わりに Django 設定から直接 Celery を構成することを意味します。

すごいですね。ただし、私が知る限り、これらは完全な Celery のデーモン化に必要なファイルです。

  • /etc/init.d/celeryd
  • /etc/defaults/celery
  • /my-proj/celery.py
  • /my-proj/__init__.py

そしておそらく:

  • /my-proj/settings.py

ファイルがたくさんある少年。私はそれらをすべて適切に設定したと思います:

  • /etc/init.d/celerydcelery が提供するデフォルトの init.d スクリプトがあります。
  • /etc/defaults/celeryほとんど何も持っていません。私のアプリへの単なるポインタ:

    export DJANGO_SETTINGS_MODULE='cl.settings'
    
  • /my-proj/celery.pyFirst Steps with Djangoの推奨ファイルがあります。

    from __future__ import absolute_import
    
    import os
    
    from celery import Celery
    
    # set the default Django settings module for the 'celery' program.
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
    
    from django.conf import settings  # noqa
    
    app = Celery('proj')
    
    # Using a string here means the worker will not have to
    # pickle the object when using Windows.
    app.config_from_object('django.conf:settings')
    app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
    
  • /my-proj/__init__.pyDjangoの最初のステップからの推奨コードがあります:

    from __future__ import absolute_import
    
    # This will make sure the app is always imported when
    # Django starts so that shared_task will use this app.
    from .celery import app as celery_app
    

settings.pyそして、ファイルには次のようなすべてのセロリ関連の設定があります。

CELERY_BIN = '/var/www/.virtualenvs/my-env/bin/celery'
CELERYD_USER = 'www-data'
CELERYD_GROUP = 'www-data'
CELERYD_CONCURRENCY = 20
BROKER_URL = 'redis://'
BROKER_POOL_LIMIT = 30

それでも、を使用してセロリを開始するsudo service celeryd startと、機能しません。代わりに、次のように表示されているため、Django プロジェクトから設定が取得されていないことは明らかです。

Nov 05 20:51:59 pounamu celeryd[30190]: celery init v10.1.
Nov 05 20:51:59 pounamu celeryd[30190]: Using config script: /etc/default/celeryd
Nov 05 20:51:59 pounamu celeryd[30190]: No passwd entry for user 'celery'
Nov 05 20:51:59 pounamu su[30206]: No passwd entry for user 'celery'
Nov 05 20:51:59 pounamu su[30206]: FAILED su for celery by root
Nov 05 20:51:59 pounamu su[30206]: - ??? root:celery
Nov 05 20:51:59 pounamu systemd[1]: celeryd.service: control process exited, code=exited status=1

ベイリングワイヤーが機能していないアイデアはありますか? 私は何か大きなものを見逃していますか?

4

2 に答える 2

-1

設定がありませんCELERY_APP構成ファイル に設定する/etc/defaults/celeryか、worker コマンドのパラメーターとして設定します。

celery worker -A my-proj

それ以外の場合、Celery は を参照する必要があるとは考えていません/my-proj/celery.py。django 環境変数は、Celery がロードするものには影響しません。

于 2015-11-06T08:16:07.563 に答える