2011-03-30 69 views
0

我剛剛注意到,當我有GAE應用程序的運行實例時,使用Python代碼或管理控制檯添加或刪除條目時,數據存儲區文件沒有任何反應。我甚至可以刪除該文件,並且仍然可以在管理區域中安全無虞地訪問所有數據,並且可以從代碼訪問這些數據但是當我重新啓動我的應用程序時,所有數據顯然都消失了,並且我有一個空白的數據存儲區。所以,這個問題 - GAE是否只在啓動時從文件中讀取所有數據,然後在內存中處理它,在停止應用程序後保存數據?它在應用程序運行時是否向數據存儲文件發出任何請求?如果它在運行時沒有保存任何文件,那麼,如果應用程序意外停止,可能數據可能會丟失?如果你知道它在這方面的工作原理,請告訴我。本地GAE在運行時是否讀取和寫入硬盤上的本地數據存儲文件?

+0

開發服務器不反映您的應用程序在生產GAE服務器上的運行方式,如果這是您所擔心的問題? – 2011-03-30 12:52:10

回答

3

數據存儲如何讀取和寫入其底層文件的方式各不相同 - 標準數據存儲在啓動時讀取,並在應用程序修改數據時逐漸寫入日誌樣式。 SQLite後端使用SQLite數據庫。

儘管如此,您不應該在意後端,因爲它們都是發展後端,所以後端在面對失敗時都不具備穩健性。您不應該修改或刪除底層文件。

1

默認情況下,dev_appserver將存儲在一個臨時位置,它的數據(這就是爲什麼它消失,你看不到任何改變)

如果你不想讓你的數據消失在重新啓動設置--datastore_path時運行你的開發服務器,如:

dev_appserver.py --datastore_path /path/to/app/myapp.db /path/to/app 

尼克說,開發服務器沒有內置到刀槍不入,它旨在幫助您快速開發應用程序。生產設置非常不同,在處理特殊情況時不會出現任何意想不到的情況。