我有一个难题。
我正在迭代一组按日期参数化的 URL 并获取它们。例如,下面是一个示例:
somewebservice.com?start=01-01-2012&end=01-10-2012
有时,从 URL 返回的内容会被截断(缺少带有“截断错误”消息的随机结果),因为我定义的范围太大,所以我必须将查询拆分为两个 URL
somewebservice.com?start=01-01-2012&end=01-05-2012
somewebservice.com?start=01-06-2012&end=01-10-2012
我递归地执行此操作,直到结果不再被截断,然后写入允许并发写入的 blob。
每个 URL 获取调用/blob 写入都在单独的任务队列任务中处理。
问题是,我一生都无法设计一个计划来知道所有任务何时完成。我尝试过使用分片计数器,但递归使其变得困难。有人建议我使用 Pipeline API,所以我看了 Slatkin 的演讲 3 遍。它似乎不适用于递归(但我承认我仍然没有完全理解该库)。
无论如何,是否有办法知道一组任务队列任务(以及递归生成的子任务)何时完成,以便我可以完成我的 blob 并对其执行任何操作?
谢谢,
约翰
你读过吗管道入门文档?管道可以创建其他管道并等待它们,因此做你想做的事情相当简单:
class RecursivePipeline(pipeline.Pipeline):
def run(self, param):
if some_condition: # Too big to process in one
p1 = yield RecursivePipeline(param1)
p2 = yield RecursivePipeline(param2)
yield RecursiveCombiningPipeline(p1, p2)
Where RecursiveCombiningPipeline
只是充当两个子管道的值的接收器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)