根据我在 Google 文档和其他 SO 问题中阅读的内容,keys_only 查询应该返回高度一致的结果(例如 here 和 here)。
我的代码看起来像这样:
class ClientsPage(SomeHandler):
def get(self):
query = Client.query()
clients = query.fetch(keys_only=True)
self.write(len(clients))
即使我使用 keys_only=True 参数获取结果,我在创建新的 Client 对象(这是一个根实体)后立即得到陈旧的结果。如果插入前有2个客户端对象,则在插入和重定向后一直显示2。我必须手动刷新页面才能看到数字变为 3。
我知道我可以使用祖先查询,但我首先测试了一些东西,我惊讶地发现 keys_only 查询返回了陈旧的结果。谁能给我解释一下这是怎么回事?
编辑 1: 这发生在开发服务器中,我没有在生产中测试过。
最佳答案
存在最终一致性是因为 Datastore 需要时间来更新所有索引。仅键查询与所有其他查询相同,除了它告诉数据存储区——我不需要整个实体,只需返回键即可。查询仍会查看索引以获取结果列表。
相比之下,通过键获取实体不需要查看索引,因此它始终是强一致的。
关于python - 为什么 keys_only 查询没有返回高度一致的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108422/