systemctl restart機能を変更する方法

systemctl restart機能を変更する方法

はじめに、Gunicornがサービスとして実行するFlaskを実行するPythonスクリプトがあります。サービスで実行されるコマンドの1つは、実行に5〜10分かかる長期実行機能です。 gunicornサービスは、SIGTERMを受信すると10分間待ってから長期実行プロセスを続行できるように自ら終了します。

再起動時の現在の作業は、10分待ってから現在のプロセスを終了して新しいプロセスを開始することです。

再起動時に実行したいのは、SIGUSR2を現在のサービスに送信して新しいサービスを開始し、SIGTERMを送信して古いサービスを終了することです。

これらすべての代替案は、SIGUSR2およびSIGTERM信号を手動で送信してから、実行中のサービスのPIDを新しいPIDに更新することです。最良の選択が何であるか完全にはわかりません。

答え1

Gunicornの組み込みオプションをもう少し詳しく調べる必要があるようです。 HUP信号をプロセスに送信してメインプロセスを停止し、ウインチを送信して新しいワーカープロセスを作成し、古いワーカープロセスを終了してメインプロセスに再接続します。

関連情報