【发布时间】:2010-07-12 02:10:05
【问题描述】:
我正在使用 Python GAE SDK。
我需要对 6000 多个 MyKind 实例进行一些处理。在单个请求中完成太慢了,所以我正在使用任务队列。如果我让一个任务只处理一个实体,那么它应该只需要几秒钟。
documentation 表示“批次”中只能添加 100 个任务。 (这是什么意思?在一个请求中?在一项任务中?)
因此,假设“批处理”表示“请求”,我试图找出为数据存储中的每个实体创建任务的最佳方法。你怎么看?
如果我可以假设MyKind 的顺序永远不会改变,那就更容易了。 (处理实际上永远不会改变MyKind 实例——它只会创建其他类型的新实例。)我可以做一堆任务,给每个任务一个从哪里开始的偏移量,间隔小于100。然后,每个任务都可以创建执行实际处理的单独任务。
但是如果实体太多以至于原始请求无法添加所有必要的调度任务怎么办?这让我觉得我需要一个递归解决方案——每个任务都会查看它给定的范围。如果该范围内仅存在一个元素,则会对其进行处理。否则,它将范围进一步细分为后续任务。
如果我不能指望使用偏移量和限制来识别实体(因为不能确保它们的顺序保持不变),也许我可以只使用它们的键?但是我可能会发送 1000 多个密钥,这看起来很笨拙。
我是否走在正确的道路上,还是我应该考虑其他设计?
【问题讨论】:
-
我面临同样的问题。看看我要做什么stackoverflow.com/questions/3211916/… 见我的第二个答案。如果您找到任何解决方案,请告诉我
标签: python google-app-engine task-queue