Skip to main content
 首页 » 编程设计

python之为什么 keys_only 查询没有返回高度一致的结果

2025年05月04日31傻小

根据我在 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 需要时间来更新所有索引。仅键查询与所有其他查询相同,除了它告诉数据存储区——我不需要整个实体,只需返回键即可。查询仍会查看索引以获取结果列表。

相比之下,通过键获取实体不需要查看索引,因此它始终是强一致的。