GAE控制台更新不适用于已部署的应用(最终不会保持一致性)

时间:2018-09-24 17:22:47

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

我的应用符合GAE标准。

我可以在云控制台中从以以下内容开头的URL中编辑实体:

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

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

然后,在我的网站上,转到使用这样的实体ID检索实体的页面

e = Entity.get_by_id(1234)

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

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

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

2 个答案:

答案 0 :(得分:3)

尝试这样的事情:

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

答案 1 :(得分:2)

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