tornado.autoreload — 開發時自動偵測程式碼變更

當原始碼檔案被修改時,自動重新啟動伺服器。

大多數應用程式不應直接存取此模組。相反地,將關鍵字參數 autoreload=True 傳遞給 tornado.web.Application 建構函式(或 debug=True,它會啟用此設定和其他幾個設定)。這將啟用自動重新載入模式,並檢查範本和靜態資源的變更。請注意,重新啟動是一個破壞性的操作,任何正在進行的請求都會在程序重新啟動時中止。(如果您想在使用其他除錯模式功能時停用自動重新載入,請同時傳遞 debug=Trueautoreload=False)。

此模組也可以作為腳本(如單元測試執行器)的命令列包裝器。請參閱 main 方法以取得詳細資訊。

命令列包裝器和應用程式除錯模式可以一起使用。建議使用此組合,因為包裝器可以捕獲語法錯誤和其他導入時的失敗,而除錯模式會在伺服器啟動後捕獲變更。

當使用 HTTPServer 的多進程模式時,此模組將無法正常運作。

重新載入會遺失任何 Python 直譯器的命令列引數(例如 -u),因為它會使用 sys.executablesys.argv 重新執行 Python。此外,修改這些變數會導致重新載入行為不正確。

tornado.autoreload.start(check_time: int = 500) None[原始碼]

開始監看原始碼檔案的變更。

在 5.0 版本變更: 已移除 io_loop 引數(自 4.1 版本起已棄用)。

tornado.autoreload.wait() None[原始碼]

等待被監看的檔案變更,然後重新啟動程序。

旨在用於腳本(如單元測試執行器)的末尾,以便在任何原始碼檔案變更後再次執行測試(但也請參閱 main 中的命令列介面)

tornado.autoreload.watch(filename: str) None[原始碼]

將檔案新增至監看清單。

預設會監看所有匯入的模組。

tornado.autoreload.add_reload_hook(fn: Callable[[], None]) None[原始碼]

新增一個在重新載入程序之前要呼叫的函數。

請注意,對於開啟的檔案和 Socket 控制代碼,通常最好設定 FD_CLOEXEC 旗標(使用 fcntlos.set_inheritable),而不是使用重新載入掛鉤來關閉它們。

tornado.autoreload.main() None[原始碼]

命令列包裝器,用於在腳本的原始碼變更時重新執行腳本。

可以透過檔案名稱或模組名稱指定腳本

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

使用此包裝器執行腳本類似於在腳本末尾呼叫 tornado.autoreload.wait,但此包裝器可以捕獲導入時的問題(如語法錯誤),否則這些問題會阻止腳本到達其對 wait 的呼叫。