スーパーバイザーは常に「終了ステータス0でプロセスを終了します。期待できません'


13

現在、vpsを再構築しています。gunicorn/ wsgi djangoプロセスの管理にスーパーバイザーを使用したいと思います。つまり、スーパーバイザーはプロセスを終了し続けます。

2010-07-23 14:54:40,575 INFO supervisord started with pid 31391
2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395
2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401
2010-07-23 14:54:42,801 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:44,806 INFO spawned: 'projectx' with pid 31404
2010-07-23 14:54:44,912 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:47,917 INFO spawned: 'projectx' with pid 31408
2010-07-23 14:54:48,022 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:49,023 INFO gave up: projectx entered FATAL state, too many start retries too quickly

これは私が使用している設定です:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
user=myuser
autostart=true
autorestart=true

私はすでにダブルチェックしており、gunicorn_djangoは正しく生成されたときにステータス0を返します。

構成にexitcodes = 0,2を明示的に追加しようとしましたが、それでも違いはないようです。プロセスは正しく生成されているように見えますが、スーパーバイザーはそうではないと考えています。

誰もこれを解決する方法についての手がかりを持っていますか?

ありがとう、ビヨン

回答:


12

gunicorn_djangoがそれ自体をデーモン化している場合、それはスーパーバイザーが管理するように設計された種類のプログラムではありません。スーパーバイザーは、監視プログラムがフォアグラウンドで実行されることを期待しているため、終了したかどうかを監視できます。

スーパーバイザードドキュメントを参照してください。


gunicornはデフォルトではそれ自体をデモナイズしませんが、設定ファイルで設定しました。それを指摘してくれてありがとう。
ビヨン

4

わかりました、いくつかの不可解な後、私はそれがユーザーと何か関係があるとわかりました。特定のユーザーとして子プロセスを実行しようとしました。行を削除した後(以下の構成を参照)、すべて正常に動作しています。

Gunicornの構成:

bind = "127.0.0.1:3305"
workers = 2

スーパーバイザー構成:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
; set the user here instead of in the gunicorn config.
user=user
autostart=true
autorestart=unexpected
stdout_logfile=/path/to/project/logs/project.log
redirect_stderr=true
exitcodes=1

1
これを肉付けしたい場合は、myuserにsuを実行し、gunicornを実行するとヒントが得られるはずです。通常、疑わしいのは、ログファイルとpidファイルが書き込み可能でないことです。または、アプリにファイルのアクセス許可も必要になる場合があります。スーパーバイザーのサポートを改善するには、supervisord(またはその場合はrunit)を介してgunicornを再起動する問題を修正したため、0.10にアップグレードする必要があります。
ポールJ.デイビス

0

スーパーバイザーの下でhttpデーモンを実行しようとすると、同様のエラーが発生しました。

古いpidファイルを削除することで修正されました:httpd_pid

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.