tornado.autoreload — 开发环境中自动检测代码变更

当源文件被修改时,自动重启服务器。

大多数应用程序不应该直接访问此模块。相反,在 tornado.web.Application 构造函数中传递关键字参数 autoreload=True(或 debug=True,它启用此设置和几个其他设置)。这将启用自动重新加载模式以及检查模板和静态资源的更改。请注意,重启是一个破坏性操作,当进程重启时,任何正在进行的请求都将被中止。(如果你想在使用其他调试模式功能时禁用自动重新加载,请同时传递 debug=Trueautoreload=False)。

此模块也可以用作围绕脚本(如单元测试运行器)的命令行包装器。有关详细信息,请参阅 main 方法。

命令行包装器和应用程序调试模式可以一起使用。这种组合受到鼓励,因为包装器可以捕获语法错误和其他导入时失败,而调试模式在服务器启动后捕获更改。

当使用 HTTPServer 的多进程模式时,此模块将无法正常工作。

重新加载会丢失任何 Python 解释器命令行参数(例如 -u),因为它使用 sys.executablesys.argv 重新执行 Python。此外,修改这些变量会导致重新加载行为不正常。

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 标志(使用 fcntlos.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 的调用。