我正在做一些應該在60秒內完成的操作,但可能會有一些罕見的情況需要更長時間(但不會超過10分鐘)。它在應用程序引擎文檔中說,如果您捕獲了DeadlineExceededException,那麼在永久失敗之前,您只有不到一秒的時間才能完成操作。這是否足夠時間將任務添加到隊列和/或執行數據存儲寫入?我假設最安全的方式是在操作開始時添加異步/寫入數據存儲實體(異步)任務,並在操作完成時將其從隊列中刪除。後一種方法會用掉兩倍的api電話,但是值得嗎?DeadlineExceededException和DataStore /任務隊列操作
0
A
回答
2
我會建議使用隊列作爲所有操作的默認值,所以如果您發現死線超過錯誤,您將不必執行回退。與用戶無需等待操作完成的事實相比,它更整潔,更易於維護。爲了達到這個目的,你可以用ajax調用你的隊列並在後臺獲得結果,這樣用戶就不會等待操作完成。是值得的,因爲它可以「保證」你可能需要的時間窗口。
1
在引發異常以準備自定義響應之後,運行時環境爲請求處理程序提供了更多時間(小於一秒)。所以將它添加到任務隊列中就足夠了。
1
如果您不希望客戶端繼續輪詢任務隊列結果,我建議您查看Channel API。它將使您能夠向客戶端實施推送通知。
在任務隊列的末尾,您只需向客戶端發送通知,讓他現在就可以處理任務。
相關問題
- 1. 隊列異步任務操作?
- 2. 任務隊列和非冪等任務
- 3. NDB post_put_hook和任務隊列
- 4. 等待隊列中的所有操作執行任務
- 5. Google任務隊列JSON API事務
- 6. 如何使用任務隊列稍後執行某些操作?
- 7. 任務隊列 - PHP
- 8. 任務隊列java
- 9. 在任務隊列
- 10. C#隊列任務
- 11. 操作隊列cocos2d
- 12. XMLstarlet和Windows任務操作
- 13. 使用操作和任務
- 14. 扭曲CPU隊列任務的隊列
- 15. 服務:任務隊列
- 16. Networkx作爲一個任務隊列?
- 17. 任務隊列停止工作
- 18. 操作隊列中的跟蹤操作
- 19. 任務隊列:殭屍任務
- 20. 任務隊列API:ETA和倒計時
- 21. 任務隊列執行
- 22. Alamofire和併發操作隊列
- 23. 讀取文件和操作隊列
- 24. 使用代理,操作和隊列
- 25. 適用於iOS應用的操作隊列和調度隊列
- 26. Cron作業,任務隊列或延期任務?
- 27. wp8的任務隊列?
- 28. 遞歸任務隊列
- 29. Coldfusion的任務隊列
- 30. Google appengine:任務隊列性能
我擔心的是持續輪詢服務器以檢查隊列是否完成。我正在做的是讓客戶端訪問服務器,它將首先檢查數據存儲以查看操作的緩存版本是否存在,如果存在則返回該操作。如果沒有,我會動態生成響應,將其緩存到數據存儲並返回。這些反應中的大多數可以在60秒內生成,但有些可能需要更長的時間。我希望我可以通過在必要時排隊響應來限制服務器輪詢的數量。什麼時候保證隊列?我多久進行一次民意調查? – cowmix 2013-03-26 21:01:40