Django プロジェクトを 'git pull' した後に Gunicorn を再起動/リロードするより良い方法 (Upstart 経由) 質問する

Django プロジェクトを 'git pull' した後に Gunicorn を再起動/リロードするより良い方法 (Upstart 経由) 質問する

私は、Django プロジェクトへの最新の変更を取得する をsudo restart projectname毎回発行するよりも良い方法を探しています。このコマンドは、Gunicorn サーバー プロセスを開始/開始するために使用する Upstart に関連していると思います。git pull origin masterrestart

この再起動により、短時間の停止が発生します。Gunicorn はまだ再起動中なので、Web サーバー (nginx) にアクセスするユーザーには 500 が返されます。実際、瞬時に再起動するように見えますが、ページが読み込まれるまでに数秒かかります。

これをシームレスに行う方法について何かアイデアはありますか? 理想的には、私git pullと Gunicorn のリロードを自動的に発行したいと思います。

ベストアンサー1

HUP次のようなシグナルを使用して、Gunicorn に正常にリロードするように指示できます。

kill -HUP <pid>

よくある質問詳細については)

私が使うスーパーバイザーGunicorn サーバーを制御するために、デプロイ後に Gunicorn をリロードするこの (少しハッキーな) 方法を使用できます。

supervisorctl status gunicorn | sed "s/.*[pid ]\([0-9]\+\)\,.*/\1/" | xargs kill -HUP

pidof明らかに、、またはを使用して同様のことを実現できますps

これは実際にはファブリックスクリプトなので、サーバーにログオンする必要すらありません。

おすすめ記事