web-dev-qa-db-ja.com

uWSGIアプリケーションを開始/停止するためのスーパーバイザーの使用方法は?

スーパーバイザーを使用してuWSGIアプリケーションを実行します。スーパーバイザーの停止後にuWSGIアプリケーションが常に停止しないのはなぜですか?スーパーバイザー構成:

[program:test]
autostart = true
user=root
command=uwsgi --master --workers  5 --disable-logging --socket 127.0.0.1:8888
--module web --callable app
priority=1
redirect_stderr=true
stdout_logfile = /data/log
19
Bdfy

デフォルトでは、スーパーバイザーは停止時にSIGTERMを送信します。 uWSGIのSIGTERMは、「残忍なリロード」を意味します。

QUITまたはINTに変更する必要があります。

stopsignal = QUIT

十分なはずです

別のアプローチ(非推奨)は、uWSGIコマンドラインに--die-on-termを追加して、デフォルトの動作を変更することです。

38
roberto
  1. プロジェクトスーパーバイザー構成ファイル

    追加 stopsignal=INT

  2. プロジェクトuwsgi設定ファイル

    削除する daemonize=xxx.logデーモンモードを無効にする

4
Color

Uwsgi構成で「processes =#」を使用する場合は、「master = true」も使用する必要があります。そうでない場合、監督者は労働者の1人だけを殺します。

次に:

/etc/supervisor/conf.d/app.conf

stopsignal = QUIT

/etc/uwsgi/app.ini

processes = 4
master = true
4
estevo

マスターとワーカーを使用してUWSGIを実行している場合は、/etc/supervisor/conf.d/app.confファイルに追加する必要があります

stopasgroup=false
killasgroup=false

そうでなければ、uwsgiを停止すると、より多くのマスターが生成され、ワー​​カーも生成されます。

1
Kunal Mawar