在我的应用程序中,我执行了一些批处理操作。不幸的是,这有时需要永远更新 400-500 个实体。我拥有的是所有实体键,我需要获取它们,更新属性并将它们保存到数据存储区,保存它们可能需要 40-50 秒,这不是我想要的。
生病简化我的模型来解释我的工作(无论如何这很简单):
class Entity(ndb.Model):
title = ndb.StringProperty()
keys = [key1, key2, key3, key4, ..., key500]
entities = ndb.get_multi(keys)
for e in entities:
e.title = 'the new title'
ndb.put_multi(entities)
获取和修改不会花费太长时间。我试图 get_async 进入一个 tasklet 以及其他任何可能的方法,只有在 get 或 forloop 需要更长的时间时才会改变。
但真正困扰我的是,一个put最多需要50秒......
在相当长的时间内完成此操作的最有效方法是什么。当然,我知道这取决于许多因素,例如实体的复杂性,但是放置所需的时间确实超出了我可以接受的限制。
我已经尝试过异步操作,tasklet ......