Skip to main content

tornado.autoreload —在开发中自动检测代码更改

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

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

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

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

此模块依赖于 IOLoop,因此它不会在WSGI应用程序和Google App Engine中工作。当使用 HTTPServer 的多进程模式时,它也不能正常工作。

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

tornado.autoreload.add_reload_hook(fn)[源代码]

在重新加载进程之前添加要调用的函数。

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

tornado.autoreload.main()[源代码]

命令行包装器,以便在源代码更改时重新运行脚本。

脚本可以通过文件名或模块名称指定:

python -m tornado.autoreload -m tornado.test.runtests
python -m tornado.autoreload tornado/test/runtests.py

使用此包装器运行脚本类似于在脚本结尾处调用 tornado.autoreload.wait,但是此包装器可以捕获导入时问题,例如语法错误,否则会阻止脚本达到对 wait 的调用。

tornado.autoreload.start(io_loop=None, check_time=500)[源代码]

开始观察源文件以进行更改。

在 4.1 版更改: io_loop 参数已弃用。

tornado.autoreload.wait()[源代码]

等待监视的文件更改,然后重新启动过程。

打算在单元测试运行程序等脚本结束时使用,在任何源文件更改后再次运行测试(但也请参阅 main 中的命令行界面)

tornado.autoreload.watch(filename)[源代码]

将文件添加到监视列表。

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