2

私は現時点ではセロリ初心者ですが、始めようとしています。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',)

ログで。

私は何を間違っていますか?

4

1 に答える 1