Subscribed unsubscribe Subscribe Subscribe

oinume journal

Scratchpad of what I learned

nodemonを使ってFlaskなWebアプリを自動でリロード

Python Flask

最近の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はけっこう気に入っている。

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)