GAE 控制台更新不适用于已部署的应用程序(非最终一致性)

GAE console updates not applying to deployed app (not eventual consistency)

我的应用程序是 GAE 标准。

我可以从 URL 开始编辑云控制台中的实体:

https://console.cloud.google.com/datastore/entities/query

我将保存实体并刷新页面并显示新数据。

然后,在我的网站上,我转到一个使用实体 ID 检索实体的页面,如下所示

e = Entity.get_by_id(1234)

但是我的网站显示的是旧数据!看来这应该是不可能的。

我唯一的解决方案是然后使用远程 api shell 获取实体(显示旧数据)然后更新然后放置实体。然后我的网站显示新数据。

在通过 ID 获取实体时,在云控制台中更新实体怎么可能不会出现在生产环境中?

这听起来像是一个缓存问题 - 正如 this page 顶部的警告所指出的那样,通过数据存储控制台更新实体不会更新或刷新缓存。您应该在进行更新后尝试通过控制台刷新内存缓存,这将确保查询直接命中数据存储。

尝试这样的事情:

e = Entity.get_by_id(1234, use_cache=False, use_memcache=False)

the_key = ndb.Key(Entity, 12345)
the_key.get(use_cache=False, use_memcache=False)

您还可以设置其他参数,例如 memcache_timeoutread_policy:

https://cloud.google.com/appengine/docs/standard/python/ndb/functions#context_options