最近のWebアプリケーションフレームワークだと、「開発している時はファイルの変更を検知して自動でアプリを再起動する」みたいな機能がある。PythonのFlaskで開発している場合は
#!/usr/bin/env python
from flask import Flask
app = Flask(__name__)
app.config.update({'DEBUG': True })
@app.route('/')
def root():
return "Hello world!"
if __name__ == '__main__':
app.run()
というコードを
$ python main.py
のように実行していると
* Running on http://127.0.0.1:5000/
* Restarting with reloader
となって自動リロードが有効になる。ただ、これってSyntax Errorが出る状態でファイルを保存してしまうとpythonのプロセス自体がそのままお亡くなりになるので、自分でコマンド叩いて起動し直さないといけない。
そこでnodemon。nodemonを使えばファイルの更新チェック自体はnodemonが行うため、Syntax Errorなコードを保存しても修正すればもう一度勝手にリロードしてくれる。
nodemonの使い方は簡単で
$ npm install -g nodemon
して
$ nodemon --exec python main.py
な感じで起動してやる。ただ、nodemonを使う場合は
app.run()
↓
app.run(use_reloader=False)
のようにFlaskでの自動リロードを無効にしてやる必要がある。
その他にも
- コンソールから rs って入力しても再起動できたり
- 変更検知の除外対象のファイルを指定できたりする
のが便利でnodemonはけっこう気に入っている。