私が知る限り、セロリのセットアップ方法を説明したドキュメントが 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/celeryd
celery が提供するデフォルトの init.d スクリプトがあります。/etc/defaults/celery
ほとんど何も持っていません。私のアプリへの単なるポインタ:export DJANGO_SETTINGS_MODULE='cl.settings'
/my-proj/celery.py
First 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__.py
Djangoの最初のステップからの推奨コードがあります: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
ベイリングワイヤーが機能していないアイデアはありますか? 私は何か大きなものを見逃していますか?