2010-08-18 67 views
1

當開始任何新的主要圖書館或系統時,我去StackOverflow的「我應該知道什麼?」的問題。答案可能是主觀的,但建議通常會爲我節省很多小時的麻煩。到目前爲止,我已經在Google App Engine上燒了幾個小時,絆倒了更多有經驗的開發人員在這裏已經知道的相同問題。最喜歡的谷歌應用程序引擎技巧和功能

我終於找到以下常見問題:

  • appcfg.py上傳不會出現在 的谷歌儀表板,直到你從版本標籤選擇 他們。
  • 如果您想要一致的響應時間,則使用cron作業來保持應用程序不被取消是 。這將成爲「共同問題的悲劇」(感謝尼克)。
  • Eclipse中的PyDev可以很好地與Google App Engine配合使用。
  • 爲Ubuntu 10.04獲取本地版本的Python 2.5很難。或者你可以「sudo add-apt-repository ppa:fkrull/deadsnakes」來獲得它。
  • 使用VirtualEnvWrapper將GAE中的Python2.5與用於其他任何其他版本的Python分離。
  • appspot上的應用程序只有在不方便的情況下切換到新的更新版本,無論控制面板是什麼。您應該在標題或頁腳中保留一個版本號以避免大肆追逐。

那麼,還有什麼我應該知道的?

+0

應該是社區問題? – 2010-08-19 20:27:54

回答

3

有一個可怕的很多涵蓋。如果你有一個你感興趣的特定領域,或許我們可以提供更具體的東西。總的來說,我將利用這個機會來插入my blog,它有很多App Engine的材料。

我會再跟你點中的一個,但是:

使用cron作業從被未被供電保持一個應用程序,如果你想一致的響應時間是必要的。

首先,這是一個'公地悲劇'問題。當他們空閒時,應用程序將不定時爲正在提供流量的應用程序開路;一羣運行'keepalive'cronjobs的人強制所有的應用程序更快地卸載,讓每個人都變得更糟。

其次,你總是會得到偶爾的裝載要求,即使是存活cron作業。您的應用程序的其他實例在需要時安排,所以每當你獲得的流量激增會出現這種情況,有人難免會載入要求。

最後,裝載請求並不需要成爲一個大問題。特別是我們最近增加了最近的Python預編譯的支持,載入要求不必花費大量的時間和工作,你花在優化將所有您的用戶受益。

+0

它似乎是公地悲劇。不過,誰想要應用程序需要10秒鐘才能在頁面之間加載? – 2010-09-02 19:56:11

+0

除非您導入真正令人驚歎的代碼量,否則您的應用程序不會花費10秒。減少這是一個很好的優化策略,並且會改善所有請求,而不僅僅是加載請求。 – 2010-09-03 08:38:45

1

如果您使用的是「爲/在」查詢,如:「查找該用戶列表今天有人創建活動」,你會發現,這樣的查詢不結垢,作爲數據存儲將其轉換到n個查詢中,其中n是「用戶」的大小。

爲了解決這個問題,我給你可計算的鍵名。在上面的示例中,事件的密鑰名稱爲:

event_<dd/mm/yy>_<user_key> 

這樣,您可以計算給定今天日期的實體的所有可能鍵名稱。一旦你有了這個列表,您可以使用:

db.get_by_key_name(key_names) 

...它取並行的實體,並且比使用「IN」查詢更快!