Yam*_*tas 1 python google-app-engine app-engine-ndb google-cloud-datastore
根据我在Google Docs和其他SO问题中所阅读的内容,keys_only查询应该返回非常一致的结果(例如,此处和此处).
我的代码看起来像这样:
class ClientsPage(SomeHandler):
def get(self):
query = Client.query()
clients = query.fetch(keys_only=True)
self.write(len(clients))
Run Code Online (Sandbox Code Playgroud)
即使我使用keys_only = True参数获取结果,我在创建新的Client对象(这是一个根实体)后立即得到过时的结果.如果在插入之前有2个客户端对象,则在插入和重定向后它会一直显示2.我必须手动刷新页面才能看到数字更改为3.
我知道我可以使用祖先查询,但我先测试一些东西,我很惊讶地看到一个keys_only查询返回过时的结果.任何人都可以向我解释发生了什么事吗?
编辑1:这发生在开发服务器上,我还没有在生产中测试过.
存在最终一致性,因为数据存储需要时间来更新所有索引.仅键查询与所有其他查询相同,除了它告诉数据存储区 - 我不需要整个实体,只需返回密钥即可.查询仍然查看索引以获取结果列表.
相反,按键获取实体不需要查看索引,因此它总是非常一致.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |