【问题标题】:How do I make app engine retrieve an attribute value from the datastore instead of the memcache?如何让应用引擎从数据存储区而不是内存缓存中检索属性值?
【发布时间】:2013-12-06 23:02:04
【问题描述】:

我正在编写一个更新属性值的 post 方法,然后显示具有更新后的属性值的实体。我正在使用 ndb。

当我运行应用引擎并刷新 localhost 时,检索的是 memcache 值,而不是新更新的属性值。我希望浏览器显示新更新的属性值;如何停止 memcache 检索?

【问题讨论】:

  • 您实际上是如何尝试获取值的? key.get()?使用query?
  • 我正在使用 .query() 获取具有更新属性的模型的每个实例,并使用 for 循环来呈现这些实例中的每一个。
  • 嗯......我不确定(除了从管理控制台清除你的内存缓存)
  • 查询不会从 memcache 中获取数据 - db 不会直接使用 memcache,如果您阅读文档,ndb 不会从 memcache 中获取查询结果。

标签: python google-app-engine jinja2 webapp2


【解决方案1】:

appengine 中的查询是不一致的,除非您的数据结构具有高度一致性。如果不是,那么您将看到与您所描述的内容不一致的结果:有关更多信息,请参阅文档,或在 stackoverflow 上查看,因为有许多帖子概述了这个确切的问题:https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency

要解决此问题,请使用 get() 检索您希望显示的数据。例如:your_entity.key.get():https://developers.google.com/appengine/docs/python/ndb/entities

【讨论】:

  • 只是添加到这里,您没有看到 memcache 结果 - ndb 仅 memcaches 单个实体 get() 调用。它没有 memcache query() 结果,因此您会看到最终的一致性行为。
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多