在我的應用程序中,我有一個很長的任務,所以我將它分成n個較小的任務。在這n個任務完成之後,將執行另一個任務並取決於這n個任務的結果。如何通過Task API實現這種依賴關係?即在其他n個任務之後執行一個任務。Google App Engine - 任務依賴關係
4
A
回答
1
我認爲有2種方法可以解決這個問題。 假設任務TD依賴於其他N任務TA,並有一個隊列Q.到隊列Q.
推ñTA任務時,每個TA完成任務,它會檢查,如果本身是最後一個隊列Q.如果TA是隊列Q中的最後一個任務,則將TD推送到隊列Q.
推送n個TA任務和TD到隊列Q.當TD運行時,它檢查是否所有TA任務完成。如果有任何未完成的TA,則通過返回範圍在200-299之外的任何HTTP狀態代碼,TD取消其執行。
這些方法的關鍵是要任務的數量在隊列問:雖然我沒有試過,我知道有一個Python API提供了實驗方法來獲取特定隊列的任務隊列資源。 stats.totalTasks屬性是隊列中的隊列總數。
請參閱http://code.google.com/intl/en/appengine/docs/python/taskqueue/rest.html
1
拿上GAE Pipeline API一看,它是用來構建複雜的任務工作流像你描述的。
0
另一種方法可以是將所有任務添加到隊列中開始。讓N個初始任務在完成時將信息記錄到數據存儲區,以某種方式允許您查詢數據存儲區以查看它們是否全部運行。
當從屬任務運行時,它執行此數據存儲查詢以查看是否滿足其條件(檢查所有初始任務已記錄完成)。如果不是,它需要稍後運行。
要完成此任務,依賴任務可以將其自身副本添加到隊列中,並計劃在某個給定時間間隔後運行。或者(如上面的答案),依賴任務可以以錯誤狀態碼終止,在這種情況下,只要不超過隊列或任務的retry_limit,它將在稍後的某個點自動重試。
相關問題
- 1. 向Ivy申明Google App Engine的依賴關係
- 2. Google App Engine上的私有npm/git依賴關係
- 3. Gradle任務依賴關係
- 4. Gulp任務依賴關係
- 5. Google App Engine JDO關係(Java)
- 6. Google App Engine,任務隊列
- 7. Google App Engine任務隊列
- 8. NoClassDefFoundError:JspSource依賴於App Engine
- 9. 可視化gradle任務依賴關係
- 10. 具有依賴關係的Sbt任務
- 11. 任務之間的Gradle依賴關係
- 12. 芹菜中的任務依賴關係
- 13. OpenMP - Fortran中的任務依賴關係
- 14. 自定義MSBuild任務依賴關係
- 15. SSIS 2008任務依賴關係配置
- 16. SharePoint任務字段依賴關係
- 17. 修復Google API任務的依賴關係task-android-sample
- 18. Google App Engine - 從App Engine Helper升級
- 19. Lucene和Google App Engine
- 20. Google App Engine - 使用管理關係
- 21. Google App Engine關係表和分頁?
- 22. 實現無主關係Google App Engine
- 23. Google App Engine DataStore中的關係
- 24. GWT上的Google App Engine任務隊列
- 25. Google App Engine任務截止日期
- 26. Google App Engine任務之間的暫停
- 27. Google App Engine任務隊列後端Python
- 28. Google App Engine上的Laravel任務計劃
- 29. Google App Engine任務隊列錯誤
- 30. Google App Engine - 任務隊列與Cron Jobs
發現一個類似於你的問題。 http://stackoverflow.com/questions/4224564/calling-a-script-after-tasks-queue-is-empty – jftsai 2012-02-12 13:52:30