uWSGI で動く Python アプリを開発しているのですが、開発中に Python ファイルを更新する度に uWSGI サービスをリロードするのは手間がかかります。そこで、Python ファイルが更新されたら uWSGI サービスを自動的にリロードするようにしてみました。
- 環境
- Ubuntu 14.04 (Trusty Tahr) Server
まず、uWSGI Python アプリのファイル名を WsgiApp.py とします。
WsgiApp.py を監視し、更新されたら uWSGI をリロードするモジュール mFileMon.py を作成
$ cat mFileMon.py
#!/usr/bin/env python3
import uwsgi
from uwsgidecorators import filemon
filemon('/some/where/WsgiApp.py')(uwsgi.reload)
mFileMon.py はモジュール検索パスが通っているどこか適当な場所に設置します。
uWSGI の WsgiApp 設定ファイルで、import に mFileMon を指定します。
$ cat /etc/uwsgi/apps-available/WsgiApp.ini
[uwsgi]
plugins = python3
pythonpath = /some/where
module = WsgiApp
import = mFileMon
念のため、uWSGI をリスタートします。
$ sudo service uwsgi restart
以降は WsgiApp.py が更新されると uWSGI サービスが自動でリロードされます。
なお、mFileMon.py で filemon() に渡しているパスを以下のようにすると /some/where/ ディレクトリを監視し、このディレクトリに設置されたどんなファイルが更新されても uWSGI サービスをリロードするようにできるようです。
$ cat mFileMon.py
#!/usr/bin/env python3
import uwsgi
from uwsgidecorators import filemon
filemon('/some/where')(uwsgi.reload)
参考
0 件のコメント:
コメントを投稿