tornado.autoreload — 開発中のコード変更を自動検出

ソースファイルが変更されたときにサーバーを自動的に再起動します。

ほとんどのアプリケーションはこのモジュールに直接アクセスするべきではありません。代わりに、キーワード引数 autoreload=Truetornado.web.Application コンストラクタ(またはdebug=True、これはこの設定といくつかの他の設定を有効にします)に渡します。これにより、自動リロードモードが有効になり、テンプレートと静的リソースの変更もチェックされます。再起動は破壊的な操作であり、プロセスが再起動すると処理中のリクエストはすべて中止されます。(他のデバッグモード機能を使用しながら自動リロードを無効にする場合は、debug=Trueautoreload=False の両方を渡します)。

このモジュールは、単体テストランナーなどのスクリプトのコマンドラインラッパーとしても使用できます。詳細は、main メソッドを参照してください。

コマンドラインラッパーとアプリケーションのデバッグモードは一緒に使用できます。ラッパーは構文エラーやその他のインポート時のエラーをキャッチし、デバッグモードはサーバーの起動後に変更をキャッチするため、この組み合わせが推奨されます。

このモジュールは、HTTPServer のマルチプロセスモードが使用されている場合は正しく機能しません。

リロードは、sys.executablesys.argv を使用してPythonを再実行するため、Pythonインタプリタのコマンドライン引数(例: -u)を失います。さらに、これらの変数を変更すると、リロードが正しく動作しなくなります。

tornado.autoreload.start(check_time: int = 500) None[source]

ソースファイルの変更の監視を開始します。

バージョン 5.0 で変更: io_loop 引数(バージョン 4.1 から非推奨)は削除されました。

tornado.autoreload.wait() None[source]

監視対象のファイルが変更されるまで待機し、プロセスを再起動します。

単体テストランナーなどのスクリプトの最後に使用して、ソースファイルの変更後にテストを再実行することを目的としています(ただし、main のコマンドラインインターフェースも参照してください)。

tornado.autoreload.watch(filename: str) None[source]

監視リストにファイルを追加します。

インポートされたすべてのモジュールはデフォルトで監視されます。

tornado.autoreload.add_reload_hook(fn: Callable[[], None]) None[source]

プロセスをリロードする前に呼び出される関数を追加します。

開いているファイルとソケットハンドルについては、リロードフックを使用して閉じる代わりに、FD_CLOEXEC フラグを(fcntl または os.set_inheritable を使用して)設定することをお勧めします。

tornado.autoreload.main() None[source]

ソースが変更されるたびにスクリプトを再実行するコマンドラインラッパー。

スクリプトは、ファイル名またはモジュール名で指定できます

python -m tornado.autoreload -m tornado.test.runtests
python -m tornado.autoreload tornado/test/runtests.py

このラッパーを使用してスクリプトを実行することは、スクリプトの最後に tornado.autoreload.wait を呼び出すのと似ていますが、このラッパーは、スクリプトが wait の呼び出しに到達するのを妨げる構文エラーなどのインポート時の問題をキャッチできます。