Pythonスクリプトが変更されたときにuWSGIを再起動するにはどうすればよいですか?


38

場所を思い出せませんが、プロジェクトスクリプトが変更されると、uWSGIはDjango開発サーバーのように自分自身をリロードできることを読みました。私はドキュメントにもインターネットにもそれを見つけることができません。これどうやってするの?

私は作業マシンでUbuntu 12.04を使用し、ステージ&プロダクションサーバー、Django 1.4およびuWSGI 1.2でDebian Squeezeを使用しています。

回答:


39

参照:http : //projects.unbit.it/uwsgi/wiki/Management

オプションを使用してuwsgiを起動した--touch-reload=/path/to/special/file/usually/the.ini場合、uWSGIをリロードするには、そのファイルをタッチしてリロードするだけです。

touch /path/to/special/file/usually/the.ini

あなたは、「自動再」機能をしたいなら、これはこれが行わ取得するヒントは次のとおりです。 http://projects.unbit.it/uwsgi/wiki/TipsAndTricks#uWSGIdjangoautoreloadmode



10

djangoの自動リロードを失いたくない場合は、このリロードメソッドを登録します(つまり、settings.pyで):

import uwsgi
from uwsgidecorators import timer
from django.utils import autoreload

@timer(3)
def change_code_gracefull_reload(sig):
    if autoreload.code_changed():
        uwsgi.reload()

これで、コードを変更すると、コードがリロードされます。

著者:シモーネ・フェデリシ


1
これは完全に機能しました。また、これは開発環境でのみ呼び出されるように条件を追加しました。
2upmedia

0

uwsgiでは、kill SIGNALを使用して再起動することもできます。以下のように使用します。

# ps -efa | grep uwsgi | grep prod
app  13390 13383  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13417 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13419 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
# kill -HUP 13390

同じコマンドを実行すると、子プロセスpidがマスターによって再生成されるときに変更されることがわかります。また、マスター/ワーカープロシージャカウントのuwsgi構成を確認します。この方法は、ansibleまたは他の自動化ツールと簡単に統合できるため、リモートでの使用が簡単になります。

これは、元のprocを--touch-reloadで開始する必要はありません。

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