在我的应用程序中,我有一个很长的任务,所以我将它分成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