2011-06-24 202 views
2

在我的數據存儲中,我有幾百個實體PlayerStatistic,我想將其重命名爲GamePlayRecord。在開發服務器上,通過在交互式控制檯中編寫一個小腳本很容易。但是一旦應用程序被部署,就沒有交互式控制檯。重構Google App Engine數據存儲

取而代之,我將該腳本複製到一個文件中並鏈接到app.yaml中的文件。我部署了腳本,打算運行一次,然後刪除它。但是,我遇到了另一個問題,那就是腳本運行了30多秒。腳本在完成之前總是會被切斷。

我的解決方案最終重寫了腳本,以便它一次創建並刪除一個實體。這樣,即使超時,腳本仍然可以繼續停留。由於我只有幾百個實體,所以大約需要刷新5次。

有沒有更好的方法在Google App Engine上運行一次性重構腳本?爲了運行這些重構腳本,是否有一個很好的方法來避開30秒的限制?

回答

5

使用任務隊列。

任務的運行時間可能比網絡請求的時間要長得多。您也可以將工作分解爲許多任務,以便它們平行運行並更快完成。當您完成任務時,您可以通過編程插入新任務,這樣整個過程就會自動完成,您無需手動刷新。

+0

這引發了我的Google App Engine關於使用延遲進行後臺工作的文章:http://code.google.com/appengine/articles/deferred.html – Kai

3

appengine-mapreduce是進行數據存儲重構的好方法。它需要處理很多凌亂的細節,您在手工編寫任務代碼時必須要面對這些細節。

相關問題