我在Google App Engine上構建了一些東西,它可以充當iPhone應用程序的後端。在應用程序中,有一些互動通過他們的API推送到社交網絡。因此,典型的工作流程是這樣的:Google App Engine - 你如何處理DatastoreTimeoutException?
- 用戶使用iPhone應用程序做的「東西」
- App Engine應用程序是通過HTTP驚動
- App Engine的提醒,用戶做了社交網絡「的東西。」如果用戶要在該網絡上檢查他們的個人資料,他們將通過應用程序顯示他們的活動。所以,就用戶而言,他們可能做了什麼。
- App Engine需要自己做一些持久性,但是當它嘗試時,會引發DatastoreTimeException。現在數據處於一種怪異的狀態。
那麼處理這個問題的好方法是什麼?根據問題的性質,我很樂意將它包裝在「交易」中,但無法回滾發送到社交網絡的內容。所以,我正在思考如何處理DatastoreTimeException?我是否應該將它包裝在試塊中,並再次嘗試?向用戶顯示一個錯誤是否是一個更好的主意,然後當他們再次嘗試時,「跳過」社交網絡交互以便它不會被推出兩次?有沒有另一個想法,我沒有想到這裏?
實際上,重試通常是成功的;即使對於小型操作,您也會定期獲取數據存儲超時。 – geoffspear 2010-01-23 14:59:34
這就是我的意思 - 如果因爲數據存儲故障而失敗,那麼重試就很好。如果因爲你的實體太大而失敗,那麼重試就會永遠流失。假設這是一個小故障,這個持續時間大概決定了你是否可以在一個簡單的循環中重試(在你的請求超時之前),或者你需要一個任務(因爲解決「怪異狀態」 )。但是我在應用引擎上沒有這方面的經驗。 – 2010-01-23 15:10:49
該對象有幾個屬性 - 一個字符串,一個長,幾個日期和幾個整數。這可能會被視爲「太大」,或者可以肯定,這是一個小故障(這是我唯一看到它的時間)。 – bpapa 2010-01-24 02:29:34