问题 Python + Tornado编辑文件后重新启动


我刚开始为我的Web服务器学习Python + Tornado。每次我修改我的python脚本或模板上的一些代码时,我必须停止在我的终端(CTRL + C)并重新启动它(python server.py),我想要一个更有效的方法来做到这一点,在修改代码之后服务器自动重启的一些文件。

以前我使用NodeJS并使用主管来执行此操作。

还有一种方法可以在Google Chrome中重新加载我的标签,这样我就可以看到更改而无需重新加载(F5)

目前我正在使用Ubuntu 11.10和Sublime Text 2并在sublime文本上使用CTRL + B,但如果服务器已经运行则会生成错误,因为地址和端口正在使用中。无需更改端口即可解决此问题。

谢谢。


12375
2018-04-01 02:03


起源



答案:


如果您正在寻找在开发过程中自动重新加载.py文件。在你的 tornado.web.Application() 放 debug=True 在你的处理程序之后。

我不认为你应该在生产环境中这样做,因为这样的实现通常使用后台线程来主动扫描文件以进行更改,这可能会降低应用程序的速度。


11
2018-04-01 02:20



工作得很好,谢谢! - danielfrg
实际上我相信龙卷风不会为此使用单独的线程,而是在其IOLoop上注册处理程序。然而,它会产生开销。此外,调试消息不应该在生产中使用。 - Eren Güven
现在可以传入“autoreload = True”。这里有一个文档页面: tornadoweb.org/en/stable/autoreload.html - Ross


答案:


如果您正在寻找在开发过程中自动重新加载.py文件。在你的 tornado.web.Application() 放 debug=True 在你的处理程序之后。

我不认为你应该在生产环境中这样做,因为这样的实现通常使用后台线程来主动扫描文件以进行更改,这可能会降低应用程序的速度。


11
2018-04-01 02:20



工作得很好,谢谢! - danielfrg
实际上我相信龙卷风不会为此使用单独的线程,而是在其IOLoop上注册处理程序。然而,它会产生开销。此外,调试消息不应该在生产中使用。 - Eren Güven
现在可以传入“autoreload = True”。这里有一个文档页面: tornadoweb.org/en/stable/autoreload.html - Ross


你需要转 autoreload 上:

tornado.autoreload.start()
tornado.autoreload.watch('myfile')

完整的例子在 https://gist.github.com/renaud/10356841


5
2018-04-10 08:36