20

スーパーバイザを使用して 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
4

4 に答える 4

41

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

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

停止信号=QUIT

十分なはずです

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

于 2013-10-22T10:13:43.333 に答える
4

uwsgi 構成に「processes = #」を使用する場合は、「master = true」も使用する必要があります。そうでない場合、スーパーバイザーのみがワーカーの 1 つを殺します。

それで:

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

stopsignal = QUIT

/etc/uwsgi/app.ini

processes = 4
master = true
于 2016-07-13T21:46:58.593 に答える
1

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

stopasgroup=false
killasgroup=false

または、uwsgi を停止してもより多くのマスターが生成され、ワー​​カーも同様に生成されます。

于 2018-04-24T13:44:59.857 に答える