tornado.autoreload
---自动检测开发中的代码更改¶
修改源文件时自动重新启动服务器。
大多数应用程序不应直接访问此模块。相反,传递关键字参数 autoreload=True
到 tornado.web.Application
构造函数(或 debug=True
,这将启用此设置和其他一些设置)。这将启用自动加载模式,并检查模板和静态资源的更改。请注意,重新启动是一个破坏性操作,当进程重新启动时,正在进行的任何请求都将中止。(如果要在使用其他调试模式功能时禁用自动加载,请同时传递 debug=True
和 autoreload=False
)
这个模块还可以用作命令行包装器,包装诸如单元测试运行程序之类的脚本。见 main
详细信息的方法。
命令行包装器和应用程序调试模式可以一起使用。当包装器捕获语法错误和其他导入时失败时,建议使用此组合,而调试模式在服务器启动后捕获更改。
此模块在以下情况下无法正常工作: HTTPServer
使用的是多进程模式。
重新加载会丢失任何python解释器命令行参数(例如 -u
)因为它使用 sys.executable
和 sys.argv
. 此外,修改这些变量将导致重新加载行为不正确。
- 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 [源代码]¶
在重新加载进程之前添加要调用的函数。
注意,对于打开的文件和套接字句柄,通常最好设置
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
.