阅读(2842) (0)

Tornado 自动检测开发中的代码更改

2022-03-11 09:51:07 更新

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

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

该模块也可以用作脚本的命令行包装器,例如单元测试运行器。

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

当使用 ​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调用。