2013-10-22 11 views
15

私はスーパーバイザーを使ってuWSGIアプリケーションを実行します。スーパバイザの停止後にuWSGIアプリケーションが停止しないのはなぜですか? スーパーバイザの設定:デフォルトのスーパーバイザーによってsupervisor fo start/stop 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 

答えて

33

が停止にSIGTERMを送信します。 uWSGIのSIGTERMは、「残忍なリロード」を意味します。

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

stopsignalを=

は別のアプローチ(落胆)はuWSGIコマンドラインに--dieオン用語を追加して

十分なはずQUITデフォルトの動作を変更する

+0

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

それは落胆していますなぜですか? –

+0

スーパーバイザを使用する場合にのみ、このオプションが必要です。スーパバイザの設定をスーパバイザの設定で修正する方がよいでしょう。 – Raz

+2

どちらの方法でもほとんど経験がありませんが、使用する正しい設定を探していたときに、「die-on-term」を使用して解決されただけの問題の例が見つかりました。http://stackoverflow.com/a/22213404/202168 https://github.com/unbit/uwsgi/issues/296 – Anentropic

2
  1. プロジェクトスーパーバイザ設定ファイル

    あなたもする必要があり、stopsignal=INT

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

    はあなたuwsgi構成に "プロセス=#" を使用している場合はデーモンモードに

3

を無効にするdaemonize=xxx.logを削除、追加"master = true"を使用します。そうでない場合、監督者は労働者の1人だけを殺します。

その後:

stopsignal = QUIT 

/etc/uwsgi/app.ini

processes = 4 
master = true 
+0

私は 'stopsignal = QUIT'を使用しましたが、supervisorctlで停止した後、pid 1によっていくつかの新しいuwsgiプロセスが作成されました。' stopsignal = INT'は停止事。 – Kyan

関連する問題