bashスクリプトを介して優雅なuwsgiリロードを行う方法?


9

私はbashスクリプトを実行しているdjangoアプリケーションを持っています。私はnginxサーバーを再起動するように要求するので、私は実行/etc/init.d/nginx reloadします。私はrestart uwsgiuwsgi を使用していますが、ハードサーバーを再起動する代わりに、正常なリロードを行う必要があります。

これどうやってするの?


私は現在、bash reload uwsgi関数を実行していsubprocess.popenます。uwsgiインスタンスによってホストされているすべてのサイトではなく、サブプロセスを呼び出しているプロセスをリロードしているようです。importing uwsgi実行uwsgi.reloadも呼び出しプロセスにのみ影響するようです。すべてのuwsgiプロセスを再起動できるPythonまたはbashを介したuwsgiのスイッチはありますか

回答:


0

あなたはそれをPythonで行うことができます

import uwsgi
uwsgi.reload()

uwsgi.reload()が断続的に動作しています。一部のプロセスが完了する前にサーバーを再起動しているようです。私はこれをdjangoアプリケーションで実行していて、サーバー全体を再起動させたいと思っています。
ダーレン、2011年

10

SIGHUP

次のようにuWSGIプロセスにSIGHUPシグナルを送信することにより、uWSGIを再起動できます。

kill -HUP <process-id>

これをbashスクリプトで自動化する場合は、次のpidfileようにオプションを指定して、uWSGIにプロセスIDを書き出させることができます。

--pidfile=/tmp/uwsgi.pid

その後、次の方法でプロセスをリロードできます。

uwsgi --reload /tmp/uwsgi.pid

タッチリロード

touch-reload引数を指定してuWSGIを起動することもできます。この引数は、タッチしたときにuWSGIをリロードさせるファイルを指定します。

--touch-reload=/some/file

次に、ファイルに触れるとuWSGIがリロードします。

touch /some/file

uWSGIは、マスタープロセスモードで実行されている場合にのみリロードできることに注意してください。ただし、通常はそうです。

詳細:http : //uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.