假设我的数据存储中有一个 Dog 类型的实体。我想对所有 Dogs 执行一个简单的操作,但我有很多狗。
all_dogs = Dog.all(keys_only=True)
print dogs.count(100000) #returns 79234, or some equally large number
如果我只是这样做:
for dog_key in all_dogs:
k = dog_key
我的理解是一样的:
for dog_key in all_dogs.run(batch_size=20):
k = dog_key
然后我会得到一个像这样的数据存储超时异常:
Timeout: The datastore operation timed out, or the data was temporarily unavailable.
如果我将 batch_size 增加到 1000,那么我就没有问题了。
是什么导致操作计时器启动以及超时需要多长时间?如何确保不会超时?
在这种情况下,增加 batch_size 会有所帮助,但如果我有数百万个 Dog 实体怎么办?如何确保在对它们执行操作时不会超时?