计数器在页面刷新时随机重置,不知道为什么?heroku / python



现在我有一个全局计数器变量。每当发送消息时,它都会更新。在本地运行我的程序没有什么奇怪的,但在heroku上,如果我重新加载页面,有时这个变量会降为零。重新加载,它回到一个数字。

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

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

谢谢!

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

这意味着如果你的Python进程停止运行(重启,崩溃,等等)——下次这个web服务器启动时,该计数器将重置回0(默认值)。

当你在Heroku上运行任何程序时,它们会频繁重启。这是随机发生的,有很多原因:

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

这种情况的发生有很多原因。

无论如何——你不应该期望Heroku持续运行你的web应用。始终期望进程重新启动。这是web开发社区的最佳实践。

理想情况下,你的应用程序应该像这样运行:

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

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

相关内容

最新更新