私は現時点ではセロリ初心者ですが、始めようとしています。RedisストレージバックエンドでDjango 1.4 + django-celery + celery 3.0.21を実行しています。次の方法で、ワーカーとセロリビートを「手動で」実行できます。
python manage.py celery worker -E -B --loglevel=INFO -n w1.manual
これを init-scripts に移動したいと思います。そこで、セロリが提供する 2 つの init スクリプトをインストールしました。必要に応じて実行でき、スクリプトは正常に動作します。ただし、スクリプトによって開始されたワーカーは失敗しています。プロジェクトの設定が見つからないようです。/etc/default/celeryd にある構成ファイルの内容は次のとおりです。
# Name of nodes to start
# here we have a single node
CELERYD_NODES="w1"
# or we could have three nodes:
#CELERYD_NODES="w1 w2 w3"
# Where to chdir at start.
CELERYD_CHDIR="/var/www/www_project_com/"
# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=8"
# Name of the celery config module.
CELERY_CONFIG_MODULE="celeryconfig"
# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
# Workers should run as an unprivileged user.
CELERYD_USER="www-data"
CELERYD_GROUP="www-data"
# Name of the projects settings module
export DJANGO_SETTINGS_MODULE="settings"
私の設定ファイルは実際には local/production/etc に分かれています。プロダクション設定は次の場所にあります。
/var/www/www_project_com/project/settings/production.py
構成ファイルの最後の行を次のように変更しようとしました。
export DJANGO_SETTINGS_MODULE="project.settings.production"
しかし、違いはないようでした。
プロセスがカスタム定義のユーザーとグループを使用しているため、init スクリプトが設定ファイル /etc/default/celery を取得していることはわかっています。
ログに次のように表示されるため、プロセスが失敗していることは明らかです。
consumer: Cannot connect to amqp://guest@127.0.0.1:5672//: [Errno 111] Connection refused.
これはデフォルト設定だと思います。私の Django プロジェクトは、接続文字列を使用して Redis を使用するように構成されています。
BROKER_URL = 'redis://localhost:6379/0'
これを整理する別の試みとして、最後の行を次のように設定してみました。
export DJANGO_SETTINGS_MODULE="settings.production"
これにより、次の結果が得られます。
[2013-07-19 05:31:48,117: ERROR/MainProcess] Unrecoverable error: ImportError('No module named settings',)
ログで。
私は何を間違っていますか?