2015-09-06 42 views
1

所以现在我有一个全局计数器变量。并且每当发送消息时它都会更新。我在本地运行我的程序并不奇怪,但在heroku上,如果我重新加载页面,有时变量会变成零。重新加载它,它回到一个数字。计数器随机重置页面刷新不知道为什么? [heroku/python]

我不知道为什么会这样。它只发生在heroku上。我究竟做错了什么?有一个更好的方法吗?

https://github.com/sharkwheels/sendCatsWeb/blob/master/app.py

谢谢!

回答

0

counter变量在内存中只有运行。

这意味着如果您的Python进程停止运行(重新启动,崩溃,无论如何) - 下一次该Web服务器启动时,该计数器将重置为0(默认值)。

当你在Heroku上运行任何程序时,它们会经常重启。这种情况是随机发生的,原因很多:

  • 也许Heroku由于加载问题必须将应用程序移动到另一个Web服务器。
  • 也许你的进程崩溃了,Heroku重新启动了它。
  • 也许Heroku创建了另一个Web应用程序实例来处理增加的负载。

这东西可能发生的原因有很多。

不管 - 你应该休想Heroku的连续运行你的web应用。始终期望您的过程重新启动。这是Web开发社区的最佳实践。

您的应用程序应该理想的功能是这样的:

  • 当访问者访问您的网页,你发送一个请求增加某种是以某种形式的数据库永久持续的数据库计数器。

这样,无论您的Web应用程序多久重启一次,您的数据都不会丢失。

+1

好的。我没有想到,回忆:现在变得更有意义了。我希望不必将数据库作为它的一个变量来处理,但是我猜我必须设置一个。谢谢! –