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

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

根据我在 Google 文档和其他 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: 这发生在开发服务器中,我没有在生产中测试过。

最佳答案

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

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

关于python - 为什么 keys_only 查询没有返回高度一致的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108422/

相关文章:

Python 与谷歌应用引擎。属性错误 : 'module' object has no attribute 'HTTPSHandler' error message

java - 使用 objectify 对名称/值对象的列表属性上的数据存储实体进行排序

java - Google App Engine 中的生日查询

python - 如何获得学期平均分

python - 在 Windows 7 和 python 3.x 上安装 numpy

python - python 中的并行性无法正常工作

java - 如何从服务器端(Google App Engine、Cloud Endpoints)将信息发送到我的客户端?

java - 异步对象化计数

python - 与手写 C 相比,pypy 是否可以快速处理线程和套接字?

python - 如何在 RQ python 中通过 id 获取作业?