2013-10-27 48 views
1

我希望有人能澄清這對我來說:開發服務器全局緩存(Python)的

是否GAE開發服務器也像生產服務器不緩存的Python全球範圍內? 我的印象是,它沒有。 我無法在文檔中找到任何關於此的信息。

感謝

昆特

+1

什麼意思是「緩存全球範圍」,你認爲生產環境是這樣的嗎? –

+0

那麼,在生產環境中,您可以在模塊中定義一個全局變量,並且GAE將其緩存在當前實例的內存中。所以它被保存在請求之間。您可以使用它來創建一個當前實例的本地「真實」內存緩存。但在開發服務器,我注意到它沒有保存在請求之間。 – Quint

回答

1

是的,它的作用。但是當您更改代碼時,開發服務器將重新啓動,併爲您的模塊提供全新的名稱空間。

Python在模塊之間沒有「全局範圍」(例如PHP)。它有命名空間。它們大多是模塊名稱空間(當您執行導入時創建),並且如您所知,GAE caching imports。該實例正在運行時該高速緩存處於活動狀態。一般情況下,實例是一個python的進程,python將變量值保存在內存中,直到至少有一個引用爲止。

由於開發服務器模擬生產服務,它的工作方式相同,但區別在於devserver監視您對文件所做的更改(並且我注意到不僅僅是文件)並在需要時重新加載它們。要保證重置模塊導入緩存,您還需要像生產中一樣重新啓動服務器。

+0

此外還有一個命令行選項來禁用自動重新啓動--automatic_restart [AUTOMATIC_RESTART] 當與 其模塊相關的文件被更改(默認值爲True)時自動重新啓動實例 –

+0

因此,如果我不更改我的代碼之間的請求,我的模塊中的全局變量應該保持嗎?這不是我所看到的。即使沒有代碼更改,它也會重新初始化每個請求。如果我在調試器中運行,這有什麼關係嗎? – Quint

+0

這個--automatic_restart參數記錄在哪裏?我找不到它。 – Quint