2014-06-22 42 views
0

我正在研究一个简单的Flask Web应用程序。我使用Eclipse/Pydev。当我在应用程序上工作时,由于代码更改,我必须经常重新启动此应用程序。这就是问题所在。当我运行应用程序时,我可以看到我的本地主机上的框架,这很好。但是当我想关闭这个应用程序时,只需点击应该在Eclipse中停止应用程序的红色方块,有时(经常),旧版本的应用程序会继续运行,因此我无法测试新版本。在这种情况下唯一有帮助的是强制关闭Windows任务管理器中的每个进程。Python/Flask:应用程序在关闭后运行

你能告诉我如何解决这个问题吗?先谢谢你。

编辑:这可能有所帮助:很多时候,我必须运行应用程序两次。否则我无法连接。

+1

您是否在应用程序中设置了'app.debug = True'?请参阅[flask调试模式](http://flask.pocoo.org/docs/quickstart/#debug-mode),它将根据您的代码更改自动重新加载应用程序。因此,您只需运行应用程序_once_。你也不应该在“调试模式”下运行它(不管在Eclipse中是什么)。相反,只需将其作为普通应用程序运行即可。如果您在调试模式下运行,由于任何中断,线程不会停止,只会被阻止。这是你在做什么? –

+0

@BurhanKhalid是的,我有调试模式设置。没有调试模式,我认为它工作得更好,但有时候也有问题。 –

回答

0

我有一件非常类似的事情发生在我身上。我使用CherryPy而不是Flask,但我的解决方案可能仍然适用于您。浏览器经常会在本地保存网页,以便在每次访问网站时不必重新下载它们。这被称为缓存,虽然它对普通网络用户非常有用,但它对于应用程序开发人员来说可能是一个真正的痛苦。如果您经常生成应用程序的新版本,则浏览器可能会显示已缓存的旧版应用程序,而不是最新的版本。我建议每次重新启动应用程序时清除缓存,或者完全禁用缓存。

+0

我试图清除缓存但我的问题仍然存在。所以我试图启动Internet Explorer(我使用Chrome)并输入http://127.0.0.1:5000/,我看到应用程序正在运行,但我之前在Eclipse中停止了它。可能它不会是缓存问题... –

1

这实际上不应该发生在最新版本的PyDev上(即:因为PyDev 3.4.1:http://pydev.org/history_pydev.html,PyDev应该终止主进程的所有子进程)。

那么,你可以检查你使用的是哪个PyDev版本?

如果您使用的是最新版本的PyDev,则默认情况下可以使用Ctrl + Shift + F9终止/重新启动。

但是,当你处理烧瓶时,你应该可以使用它来自动重新加载代码更改,而无需通过设置use_reloader = True进行任何操作。 012e:我没有真正测试过,但是它的文档说你可以为该运行设置重载标志(use_reloader = True) - 而且PyDev甚至应该能够调试它(我会更好的稍后查看并改进该区域的PyDev文档)。

相关问题