Python/Flask: 关闭后应用仍在运行
我正在做一个简单的Flask网页应用,使用的是Eclipse/Pydev这个开发工具。在开发过程中,我需要频繁地重启这个应用,因为代码总是在变动。这就带来了一个问题:当我运行应用时,可以在本地看到它的界面,这很好。但是当我想关闭这个应用时,点击Eclipse里的红色方块(本来是用来停止应用的),有时候(其实是经常)旧版本的应用还是在运行,这样我就没法测试新版本了。在这种情况下,我只能去Windows任务管理器强制关闭所有相关进程。
你能给我一些建议,帮我解决这个问题吗?谢谢!
补充说明:很多时候,我需要运行这个应用两次,否则就无法连接。
3 个回答
其实在最新版本的PyDev中,这种情况是不应该发生的(也就是说,从PyDev 3.4.1开始:http://pydev.org/history_pydev.html,PyDev应该会结束所有主进程的子进程)。
所以,你能检查一下你使用的PyDev版本吗?
如果你使用的是最新版本的PyDev,可以按Ctrl+Shift+F9来结束或重新启动,默认情况下是这样。
不过因为你在使用flask,应该可以通过设置use_reloader=True来实现代码更改后自动重载,而不需要手动操作。
也就是说:我其实还没有测试过,但它的文档上说你可以为运行设置重载标志(use_reloader=True)——而且PyDev应该也能调试这个功能(我稍后会更仔细地查看,并改进PyDev在这方面的文档)。
我也遇到过类似的情况。我当时用的是CherryPy,而不是Flask,不过我的解决办法可能对你也有帮助。通常,浏览器会把网页保存在本地,这样每次访问网站时就不用重新下载。这种做法叫做缓存,虽然对普通用户来说很方便,但对开发应用的程序员来说却可能带来麻烦。如果你经常更新应用,浏览器可能会显示它之前保存的旧版本,而不是最新的版本。我建议每次重启应用时都清理一下缓存,或者干脆禁用缓存。