Tornado 自动检测开发中的代码更改
修改源文件时自动重启服务器。
大多数应用程序不应直接访问此模块。 相反,将关键字参数 autoreload=True
传递给 tornado.web.Application
构造函数(或 debug=True
,这将启用此设置和其他几个设置)。 这将启用自动重新加载模式以及检查模板和静态资源的更改。 请注意,重新启动是一种破坏性操作,当进程重新启动时,任何正在进行的请求都将被中止。 (如果您想在使用其他调试模式功能时禁用自动重载,请同时传递 debug=True
和 autoreload=False
)。
该模块也可以用作脚本的命令行包装器,例如单元测试运行器。
命令行包装器和应用程序调试模式可以一起使用。 鼓励这种组合,因为包装器会捕获语法错误和其他导入时失败,而调试模式会在服务器启动后捕获更改。
当使用 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
等待监视的文件更改,然后重新启动该过程。
旨在用于单元测试运行器等脚本的末尾,以在任何源文件更改后再次运行测试
tornado.autoreload.watch(filename: str) → None
将文件添加到监视列表。
默认情况下会监视所有导入的模块。
tornado.autoreload.add_reload_hook(fn: Callable[[], None]) → None
在重新加载进程之前添加一个要调用的函数。
请注意,对于打开的文件和套接字句柄,通常最好设置 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
调用。