研究熱更新Python程序時,需要將已有的HTTP服務器重啟。
我的HTTP服務器是用tornado.web.Application生成的,這樣很簡單:
import tornado.web webapp = Application(...) webapp.listen(10000)
在熱更新時會提示端口已被使用,那么就需要關閉它。
搜索Application如何關閉,還真有一個“內存溢出”😂,How do I stop Tornado web server?
不過,最好的答案也沒能真正解決問題,只是把整個tornado都停止掉了,這未免太動粗了。
對Application各種dir,發現根本也沒有stop,頓生邪念,tornado這么不成熟?!
后看官方文檔發現,其實Application只是個代理人,它不是實際的HTTP對象。在它的listen方法調用后會返回一個HTTPServer對象,這才是關鍵。
需要把它保存起來,以后就可以stop了。
server=webapp.listen(10000)
server.stop()