当涉及到像这样启动Pipeline时,背后的细节是什么(只是Pipeline API演示代码中的一行复制粘贴示例):
split_counts = yield SplitCount(entity_kind, property_name, *value_list)
yield是否只会将一(1)个任务排入任务队列,或者管道会根据正在完成的任务“自己”对每个管道使用不同数量的任务进行内部处理?
问题的上下文:从头开始解决作业,使用任务队列、异步url获取、memcache、后端/模块的组合保持完全控制,从而控制有关任务和相应任务队列的所有细节;
或,
只需依赖管道即可。
发布于 2014-09-26 21:05:21
当你生成一个pipeline实例时,Pipeline api基本上会将一个“run”任务排入队列。
然而,当产生的流水线返回时,可能会有一个额外的“输出”任务排队,以将结果转发到依赖于它们的任何下游流水线(并“运行”它们)……在这个过程中还有一个“扇出”的任务。
当整个流水线链运行后,每个组成流水线都将有另一个“最终”任务排入队列。
向下查看定义请求处理程序的pipeline.py的底部。
当然,这些任务中的任何一个都可以多次入队,对于GAE任务队列中的任何任务,如果您的管道实例在运行时引发了任何未捕获的异常,则将重试该任务。
这里有一些更多的细节(不是关于任务的具体细节,更多的是我试图理解所涉及的yield表达式):
发布于 2014-03-13 16:44:15
简而言之,您很可能需要Task Queues、memcache、异步url抓取等等。收益率和流水线与任务队列无关,它们管理的协程本身不能执行上述任何操作。
试着消除一些明显的混乱:让步并不能创建一个任务。管道不是任务队列。Yield expressions是不依赖于AppEngine的Python语言构造。相反,任务是数据结构(队列)中的AppEngine记录,AppEngine运行时使用它来启动新的后台进程(不为浏览器请求提供服务),该进程最多可以运行10分钟。包括后台任务的任何进程可以可选地使用收益率来管理仅在该进程内的流控制。我希望这能帮到你。
https://stackoverflow.com/questions/22350388
复制相似问题