计数器随机重置页面刷新不确定为什么? [heroku / python]

时间:2015-09-06 22:39:42

标签: python-2.7 heroku flask

所以现在我有一个全局计数器变量。并且每当发送消息时它都会更新。在本地运行我的程序我没有任何古怪,但在heroku上,如果我重新加载页面,有时变量只会碰到零。重新加载它,它回到一个数字。

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

您的counter变量仅在内存中运行。

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

当您在Heroku上运行任何程序时,它们将经常重启。这是随机发生的,原因有很多:

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

这种事情可能有很多原因。

无论如何 - 你永远不应期望Heroku能够持续运行你的webapp。始终期望重新启动您的流程。这是Web开发社区的最佳实践。

理想情况下,您的应用程序应该具有以下功能:

  • 当访问者访问您的页面时,您会向某种形式的数据库中永久保留的某种数据库计数器发送增量请求。

这样,无论您的Web应用程序重新启动的频率如何,您的数据都不会丢失。