1

我的实时应用程序中有一个“奇怪”的查询......

运行 1.8.4 SDK... 1.8.5 使用 Python 2.7 的实时实例

测量是一个 NDB 模型...具有称为状态的字符串属性和称为资产的关键属性...。

(深入我的处理程序代码......)

cursor=None
limit=10
asset_key = <a key to an actual asset>
qry = Measurement.query(
   Measurement.status=='PENDING', 
   Measurement.asset=asset_key)
results, cursor, more = qry.fetch_page(page_size=limit, start_cursor=cursor)

现在奇怪的是,如果我运行它,有时我会得到 4 个项目,有时只得到 1 个。(正确答案是 4)....

查询的转储完全相同...游标设置为无...限制始终相同...相同的处理程序...相同的查询并且每个查询之间没有新记录。新鲜实例(例如第一次 + 没有其他用户)

每个查询仅以秒分隔,但结果不同。

我在这里遗漏了什么……有其他人经历过吗?这是某种损坏的索引吗?(这是一个相对较大的“表”,有 482,911 个项目) NDB 是否缓存了游标变量???

非常非常奇怪。

4

1 回答 1

0

查询不会在任何缓存中查找值。但是,如果缓存策略如此说明(根据文档),查询结果将被写回上下文缓存。https://developers.google.com/appengine/docs/python/ndb/cache#incontext

也许查看相关实体的缓存策略。但是,从您的代码段中,我不确定您的查询是否高度一致。这更有可能是导致此问题的原因:https ://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency

于 2013-10-13T05:45:03.547 回答