web-dev-qa-db-ja.com

gunicornを設定するにはどうすればよいですか?

Upstartは、setpgrp( github issue を参照)を呼び出そうとするため、gunicornの起動を好みません。10.04.1サーバーインストールで[gunicorn]を起動する最良の方法は何でしょうか。 -理想的には、失敗したメインプロセスと複数のワーカーを自動的に再起動します。 gunicornサイトで、彼らは[runit]と[supervisord]に言及していますが、ubuntuの新興企業と一緒に別の種類のプロセススーパーバイザーをインストールする価値はありますか?

誰かがより良い解決策を思い付かない場合は、試験後に進捗をここで文書化します。

OK

respawn
respawn limit 10 5

expect daemon # also tried expect fork

exec python /path/to/manage.py run_gunicorn --daemon

しかし、私は仕事を始めるように思えない、それはただハングする? ps aux | grep manageまたはsyslogに何も表示されません。upstartがフォークを適切にキャッチしていないと推測しています。 gunicornの代わりにmanage.pyを直接使用しているからですか?チャンスがあり次第、直接実行してみましょう。

明確化:manage.pyはDjango 1.2インスタンスからのもので、gunicornがインストール済みアプリとしてありますが、settings.pyには特別な設定はありません(gunicornsポートを指定するための構文がわかりませんsettings.pyの/ address/workersなので、cmdline argsを使用するだけでした)

5
adonm

Githubの問題でもコメントしました。

Setpgrpとgunicornには問題があるように見えるので、それを実行するとより良い結果が得られる可能性があります

フォークを期待する

アップスタートジョブ定義に追加されました。

のようなもの

start on runlevel [2345]
stop on runlevel [!2345]

respawn
expect fork

exec /path/to/gunicorn --daemon

うまくいくはずです。

「man 5 init」は豊富な情報であり、物事がこのように機能する理由を理解するのに役立つはずです。

5
SpamapS

UpunicornでGunicornを使用できるようにするパッチをGunicornマスター[1]にプッシュしました。このバージョンでは、「expect fork」設定ディレクティブを使用する必要はありません。

[1] https://github.com/benoitc/gunicorn

3
Paul J. Davis