【问题标题】:Why is a keys_only query not returning strongly consistent results?为什么 keys_only 查询没有返回高度一致的结果?
【发布时间】:2016-01-30 23:19:35
【问题描述】:

根据我在 Google Docs 和其他 SO 问题中阅读的内容,keys_only 查询应该返回高度一致的结果(例如herehere)。

我的代码如下所示:

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: 这发生在开发服务器中,我没有在生产中测试过。

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore app-engine-ndb


    【解决方案1】:

    存在最终一致性是因为数据存储区需要时间来更新所有索引。仅键查询与所有其他查询相同,只是它告诉数据存储区 - 我不需要整个实体,只需将密钥返回给我。查询仍会查看索引以获取结果列表。

    相比之下,通过key获取实体不需要看索引,所以总是强一致的。

    【讨论】:

    • 谢谢,我现在明白我的困惑了。我现在将新形成的键作为参数传递给下一个函数,以便在查询未找到时添加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 2011-11-07
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多