どこにあるか思い出せませんが、uWSGIはDjango開発サーバーがプロジェクトスクリプトが変更されたときに開発サーバーにリロードできます。 the docs でそれを見つけることができません。また、インターネットではどうすればよいですか?
私は稼働中のマシンでUbuntu 12.04を使用し、ステージおよび本番サーバーでDjango 1.4およびuWSGI 1.2でDebian Squeezeを使用しています。
参照: http://projects.unbit.it/uwsgi/wiki/Management
--touch-reload=/path/to/special/file/usually/the.ini
オプションを使用してuwsgiを開始した場合、uWSGIのリロードは、そのファイルをタッチするだけで簡単にリロードできます。
touch /path/to/special/file/usually/the.ini
そして、「autoreload」機能が必要な場合は、これを実現するためのヒントです: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks#uWSGIdjangoautoreloadmode
py-autoreload=N
新しいリリースのオプション。 N
をチェックの頻度(秒単位)に設定するだけです(3が適切な値です)。
Django autoreloadを失いたくない場合は、このreloadメソッドを登録します(つまり、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()
コードを変更すると、再読み込みされます。
作成者:Simone Federici
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
同じコマンドを実行すると、マスターによって再生成されるときに子proc pidが変更されることがわかります。また、uwsgi configでマスター/ワーカープロシージャカウントを確認してください。この方法はansibleまたは他の自動化ツールと簡単に統合できるため、リモートでの使用が容易になります。
これは、-touch-reloadで開始する元のプロシージャを必要としません。