我正在使用 Python GAE SDK。
我有一些处理需要在 6000 多个MyKind
. 在单个请求中完成太慢了,所以我正在使用任务队列。如果我让一个任务只处理一个实体,那么它应该只需要几秒钟。
文档说只能在“批次”中添加 100 个任务。(这是什么意思?在一个请求中?在一项任务中?)
因此,假设“批处理”意味着“请求”,我试图找出为数据存储中的每个实体创建任务的最佳方法。你怎么看?
如果我可以假设的顺序MyKind
永远不会改变,那就更容易了。(处理过程永远不会真正改变MyKind
实例——它只会创建其他类型的新实例。)我可以做一堆任务,给每个任务一个从哪里开始的偏移量,间隔小于 100。然后,每个任务都可以创建执行实际处理的单独任务。
但是如果实体太多以至于原始请求无法添加所有必要的调度任务怎么办?这让我觉得我需要一个递归解决方案——每个任务都会查看它给定的范围。如果该范围内仅存在一个元素,则会对其进行处理。否则,它将范围进一步细分为后续任务。
如果我不能指望使用偏移量和限制来识别实体(因为不能确保它们的顺序是恒定的),也许我可以只使用它们的键?但随后我可能会发送 1000 多个密钥,这看起来很笨拙。
我在这里走的是正确的道路,还是我应该考虑另一种设计?