tornado.autoreload — Automatically detect code changes in development

修改源文件后自动重启服务器.

大多数应用程序不应直接访问此模块. 而是将关键字参数autoreload=True传递给tornado.web.Application构造函数(或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]

Add a file to the watch list.

默认情况下会监视所有导入的模块.

tornado.autoreload.add_reload_hook(fn: Callable[[], None]) → None[source]

在重新加载进程之前,添加一个要调用的函数.

请注意,对于打开文件和套接字句柄,通常最好设置FD_CLOEXEC标志(使用fcntltornado.platform.auto.set_close_exec ),而不是使用重新加载钩子来关闭它们.

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 .