【发布时间】:2012-10-23 19:08:35
【问题描述】:
我不想在调试模式下运行 tornado 或使用 autoreload ,但我仍然希望能够通过触发器重新加载服务器,例如请求特定的 url,或者使用计时器或其他东西,
有没有办法手动重新加载 tornado httpserver 而不会终止进程并重新启动它?
【问题讨论】:
-
这将如何工作? Autoreload 只是终止进程并启动一个新进程。我无法调用 tornado.autoreload._reload() 来玩得很好,但即使你这样做了,它也会断开所有打开的连接...
-
所以基本上这不是特定于龙卷风的限制,你不能用任何正在运行的python代码来做到这一点,对吧?
-
其实我错了,这个应该可以通过reload来实现:docs.python.org/library/functions.html?highlight=reload#reload
-
然而,实现(重新加载)是...复杂的。像重新加载顺序这样的事情很重要。这就是为什么 Tornado 只是重新启动该过程。例如,对于 sys.modules.values() 中的 mod:reload(mod) 中断。