tornado.autoreload
— 開發時自動偵測程式碼變更¶
當原始碼檔案被修改時,自動重新啟動伺服器。
大多數應用程式不應直接存取此模組。相反地,將關鍵字參數 autoreload=True
傳遞給 tornado.web.Application
建構函式(或 debug=True
,它會啟用此設定和其他幾個設定)。這將啟用自動重新載入模式,並檢查範本和靜態資源的變更。請注意,重新啟動是一個破壞性的操作,任何正在進行的請求都會在程序重新啟動時中止。(如果您想在使用其他除錯模式功能時停用自動重新載入,請同時傳遞 debug=True
和 autoreload=False
)。
此模組也可以作為腳本(如單元測試執行器)的命令列包裝器。請參閱 main
方法以取得詳細資訊。
命令列包裝器和應用程式除錯模式可以一起使用。建議使用此組合,因為包裝器可以捕獲語法錯誤和其他導入時的失敗,而除錯模式會在伺服器啟動後捕獲變更。
當使用 HTTPServer
的多進程模式時,此模組將無法正常運作。
重新載入會遺失任何 Python 直譯器的命令列引數(例如 -u
),因為它會使用 sys.executable
和 sys.argv
重新執行 Python。此外,修改這些變數會導致重新載入行為不正確。
- tornado.autoreload.start(check_time: int = 500) None [原始碼]¶
開始監看原始碼檔案的變更。
在 5.0 版本變更: 已移除
io_loop
引數(自 4.1 版本起已棄用)。
- tornado.autoreload.wait() None [原始碼]¶
等待被監看的檔案變更,然後重新啟動程序。
旨在用於腳本(如單元測試執行器)的末尾,以便在任何原始碼檔案變更後再次執行測試(但也請參閱
main
中的命令列介面)
- tornado.autoreload.add_reload_hook(fn: Callable[[], None]) None [原始碼]¶
新增一個在重新載入程序之前要呼叫的函數。
請注意,對於開啟的檔案和 Socket 控制代碼,通常最好設定
FD_CLOEXEC
旗標(使用fcntl
或os.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
的呼叫。