2015-09-06 36 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

好的。我沒有想到,回憶:現在變得更有意義了。我希望不必將數據庫作爲它的一個變量來處理,但是我猜我必須設置一個。謝謝! –

相關問題