NDB Query不返回完整对象

时间:2012-04-09 14:25:05

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

我正在做一个NDB查询,它似乎只是获取一个部分对象。对于模型,我已经关闭了缓存,以防万一。但是,当我可以看到它们填充在数据存储区查看器中时,许多属性将返回None。

这是本地开发服务器(并已部署),查询由后端进程完成。

注意:清除内存缓存没有帮助。

注意:如果我使后端重新启动,它将开始下拉正确的数据。

基本上:

后端开始每X秒查询一次模型实例

前端导致对模型实例的更改

后端继续查看实例的原始版本,直到重新启动

后端代码非常简单:

while 1:
    time.sleep(2)
    q = None
    res = None
    q = core.Agent.query()
    res = q.fetch(10)
    for a in res:
        logging.error("%s" % a.to_dict())

前端更改了一些属性(并在查看器中显示),但后端只显示旧值。看起来Filter似乎会根据正确的值进行过滤,但fetch()会返回旧的东西。

1 个答案:

答案 0 :(得分:1)

您需要清除循环顶部的上下文缓存,例如

while 1:
  ndb.get_context().clear_cache()
  <rest of your code>