2

私のdotcloudセットアップ(rabbitmqを使用したdjango-celery)は、1週間前は正常に機能していました。プロセスは正常に起動し、ログはクリーンでした。ただし、最近(コードを更新せずに)再プッシュしたところ、ログには、プロセスが実行されているように見えても、プロセスの開始に失敗したことが示されています。

監視対象ログ

dotcloud @ hack-default-www-0:/ var / log/supervisor$よりsupervisord.log
2012-06-03 10:51:51,836CRITuidをユーザー1000に設定します
2012-06-03 10:51:51,836警告追加ファイル"/etc/supervisor/conf.d/uwsgi.cが含まれています
解析中のonf"
2012-06-03 10:51:51,836警告追加ファイル "/ home / dotcloud / current/superviが含まれています
解析中のsord.conf」
2012-06-03 10:51:51,938INFORPCインターフェイス'スーパーバイザー'が初期化されました
2012-06-03 10:51:51,938警告cElementTreeがインストールされていません。低速のXMLパーサーを使用しています
 XML-RPCの場合
2012-06-03 10:51:51,938HTTPなしで実行されているCRITサーバー'unix_http_server'
認証チェック
2012-06-03 10:51:51,946監視対象プロセスをデーモン化するINFO
2012-06-03 10:51:51,947INFO監視対象がpid144で開始しました
2012-06-03 10:51:53,128 INFOが生成されました:'celerycam' with pid 159
2012-06-03 10:51:53,133 INFOが生成されました:'apnsd' with pid 161
2012-06-03 10:51:53,148 INFOが生成されました:'djcelery' with pid 164
2012-06-03 10:51:53,168 INFOが生成されました:'uwsgi' with pid 167
2012-06-03 10:51:53,245 INFO exited:djcelery(終了ステータス1;予期されていません)
2012-06-03 10:51:53,247情報が終了しました:celerycam(終了ステータス1;予期されていません)
2012-06-03 10:51:54,698情報が生成されました:「celerycam」とpid 176
2012-06-03 10:51:54,698情報の成功:apnsdがRUNNING状態になり、プロセスにsがあります
1秒以上起きた(startsecs)
2012-06-03 10:51:54,705 INFOが生成されました:'djcelery' with pid 177
2012-06-03 10:51:54,706情報の成功:uwsgiがRUNNING状態になり、プロセスにsがあります
1秒以上起きた(startsecs)
2012-06-03 10:51:54,731情報が終了しました:djcelery(終了ステータス1;予期されていません)
2012-06-03 10:51:54,754情報が終了しました:celerycam(終了ステータス1;予期されていません)
2012-06-03 10:51:56,760 INFOが生成されました:'celerycam' with pid 178
2012-06-03 10:51:56,765 INFOが生成されました:'djcelery' with pid 179
2012-06-03 10:51:56,790情報が終了しました:celerycam(終了ステータス1;予期されていません)
2012-06-03 10:51:56,791情報が終了しました:djcelery(終了ステータス1;予期されていません)
2012-06-03 10:51:59,798 INFOが生成されました:'celerycam' with pid 180
2012-06-03 10:52:00,538 INFOが生成されました:'djcelery' with pid 181
2012-06-03 10:52:00,565 INFOが終了しました:celerycam(終了ステータス1;予期されていません)
2012-06-03 10:52:00,571情報はあきらめました:celerycamは致命的な状態になりました、あまりにも多くのst
アートの再試行が速すぎる
2012-06-03 10:52:00,573 INFO exited:djcelery(終了ステータス1;予期されていません)
2012-06-03 10:52:01,575情報はあきらめました:djceleryは致命的な状態になりました、あまりにも多くのsta
rtの再試行が速すぎます
dotcloud @ hack-default-www-0:/ var / log /supervisor $

djerrorログ:

dotcloud @ hack-default-www-0:/var/log/supervisor $ more djcelery_error.log
トレースバック(最後の最後の呼び出し):
  ファイル"hack/ manage.py"、2行目、
    django.core.managementからインポートexecute_manager
ImportError:django.core.managementという名前のモジュールがありません
トレースバック(最後の最後の呼び出し):
  ファイル"hack/ manage.py"、2行目、
    django.core.managementからインポートexecute_manager
ImportError:django.core.managementという名前のモジュールがありません
トレースバック(最後の最後の呼び出し):
  ファイル"hack/ manage.py"、2行目、
    django.core.managementからインポートexecute_manager
ImportError:django.core.managementという名前のモジュールがありません
トレースバック(最後の最後の呼び出し):
  ファイル"hack/ manage.py"、2行目、
    django.core.managementからインポートexecute_manager
ImportError:django.core.managementという名前のモジュールがありません
dotcloud @ hack-default-www-0:/ var / log /supervisor $

statusctrlは、一部のプロセスが実行されていることを示していますが、pidは異なります。また、セロリ機能は問題なく機能しているようです。メッセージが処理され、django管理インターフェースで処理されているメッセージを確認できます(dj celery camが実行されています)。

#supervisorctl status
apnsd RUNNING pid 225、稼働時間0:00:44
celerycam RUNNING pid 224、稼働時間0:00:44
djcelery RUNNING pid 226、稼働時間0:00:44

Supervisord.confファイル:

[プログラム:djcelery]
ディレクトリ=/home / dotcloud / current /
コマンド=pythonhack / manage.py celeryd -E -l info -c 2
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log

[プログラム:celerycam]
ディレクトリ=/home / dotcloud / current /
コマンド=pythonhack / manage.py celerycam
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log

http://jefurii.cafejosti.net/blog/2011/01/26/celery-in-virtualenv-with-supervisord/は、使用されているPythonが正しくないことが問題である可能性があると述べているため、Pythonを明示的に指定しました監視対象ファイル内。現在は機能していますが、上記の内容と、先週正常に機能していたときに構成を変更しなければならなかった理由については説明されていません。

また、すべてのpidが並んでいるわけではありません。

2012-06-03 11:19:03,045CRITサーバー'unix_http_server'がHTTPなしで実行されています
認証チェック
2012-06-03 11:19:03,051監視対象プロセスをデーモン化するINFO
2012-06-03 11:19:03,052INFO監視対象がpid144で開始しました
2012-06-03 11:19:04,061 INFOが生成されました:'celerycam' with pid 151
2012-06-03 11:19:04,066 INFOが生成されました:'apnsd' with pid 153
2012-06-03 11:19:04,085 INFOが生成されました:'djcelery' with pid 155
2012-06-03 11:19:04,104 INFOが生成されました:'uwsgi' with pid 156
2012-06-03 11:19:05,271情報の成功:celerycamがRUNNING状態になり、プロセスh
1秒以上起きたまま(startsecs)
2012-06-03 11:19:05,271情報の成功:apnsdがRUNNING状態になり、プロセスにsがあります
1秒以上起きた(startsecs)
2012-06-03 11:19:05,271情報の成功:djceleryがRUNNING状態になり、プロセスha
sが1秒を超えて稼働し続けた(startsecs)
2012-06-03 11:19:05,271情報の成功:uwsgiがRUNNING状態になり、プロセスにsがあります
1秒以上起きた(startsecs)

ステータスは、セロリカムのpidが並んでいないことを示しています。

#supervisorctl status
apnsd RUNNING pid 153、稼働時間0:06:17
celerycam RUNNING pid 150、稼働時間0:06:17
djcelery RUNNING pid 155、稼働時間0:06:17
4

1 に答える 1

2

私の最初の推測では、間違ったpythonバイナリ(systempythonの代わりにpython)を使用しており、そのpythonバイナリにはそのパッケージがインストールされていないvirtualenvため、このエラーが発生しています(以下) 。system

  Traceback (most recent call last):
  File "hack/manage.py", line 2, in 
    from django.core.management import execute_manager
  ImportError: No module named django.core.management

正しいPythonバージョンを指していることを確認するために、supervisord.confを次のように変更する必要があります。

[program:djcelery]
directory = /home/dotcloud/current/
command = /home/dotcloud/env/bin/python hack/manage.py celeryd -E -l info -c 2
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log

[program:celerycam]
directory = /home/dotcloud/current/
command = /home/dotcloud/env/bin/python hack/manage.py celerycam
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log

Pythonパスはからになりましpython/home/dotcloud/env/bin/python

スーパーバイザーが実行されていないのに実行されていると言っている理由はわかりませんが、この1つの小さな変更がエラーをクリアし、すべてを再び機能させるのに役立つことを願っています。

于 2012-06-03T13:31:50.747 に答える