2014-10-08 14 views
0

我想使用Django設置來無限期地存儲一個值。這個值將在服務器進程的整個生命週期中改變,不應該被遺忘。看看,我想要做的是在我的服務器的文件系統上生成一個靜態文件,並將其生成時間存儲在django.conf.settings中。使用Django設置來緩存時間戳

我意識到當fcgi服務器重新啓動時,所有設置都會丟失,這沒關係。但是,我看到的行爲(和問題)是設置正在經常重置。我無法確定它爲什麼被重置,它看起來相當隨機。

有沒有人知道Django是否經常重置其設置?還是應該在我的邏輯中尋找一個bug?如何實現我想要的另一種方式?這可能與在線程模式下運行fcgi服務器有關嗎?

我可能只是寫出來的時間戳到文件系統,我們將看到...

PS:我的代碼工作,當我使用Django的本地lighttp服務器的預期。

PPS: Django的緩存框架可能早就一個聰明的方式來獲得我想要的東西,但在這一點上,我將無法使用它:(

+2

嗯,基本上你在做的不是將值保存在設置__file__中,而是保存在當前的'Settings'實例中。在一個有多個工作者的服務器上,對於所有工作人員來說顯然是不一樣的..會推薦使用MySQL(或者如果你擔心性能,則使用SQLitedb)..或者可能詳細說明你正在做什麼,也許還有另一個明顯的解決方案 – 2014-10-08 09:46:25

+0

感謝@Martin,這聽起來對我來說很合理,而且非常有意義。現在我只是要寫入文件系統(沒有這個項目的數據庫)。我很欣賞你寫評論的時間,歡呼:) – macguru2000 2014-10-08 17:30:01

回答

0

所以短期的回答這個問題:不要將全局運行時數據存儲在Django的設置中,每個新的進程線程都會創建自己的設置實例,這意味着您的應用程序在每個線程中的行爲不同,或者您必須以單線程模式運行您的應用程序性能)

如果您需要存儲此類數據,請使用Django緩存框架,數據庫或文件系統。