69

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

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

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

4

9 に答える 9

103

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

kill -HUP <pid>

(詳しくはよくある質問をご覧ください)

スーパーバイザーを使用して Gunicorn サーバーを制御します。これにより、展開後に Gunicorn をリロードするこの (少しハッキーな) 方法を使用できます。

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

pidof、 またはで同様のことを達成できることは明らかですps

これは実際にはFabricスクリプトから実行されるため、サーバーにログオンする必要さえありません。

于 2012-03-27T08:12:39.477 に答える
6

スーパーバイザーの下で Gunicorn を実行しますが、Gunicorn が混乱したときに Gunicorn を適切にリロードする方法として、これが最も簡単でクリーンな方法です。

sudo pkill -HUP -f gunicorn.*master
于 2015-10-28T22:55:44.087 に答える