我的实时应用中有一个查询已经变得“奇怪”......
使用Python 2.7运行1.8.4 SDK ... 1.8.5实时实例
Measurement是一个NDB模型......带有一个名为status的字符串属性和一个名为asset ....的键属性
(深入我的处理程序代码......)
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缓存了一个游标变量???
很奇怪。
答案 0 :(得分:0)
查询不会在任何缓存中查找值。但是,如果缓存策略如此(根据文档),查询结果将写回到上下文缓存中。 https://developers.google.com/appengine/docs/python/ndb/cache#incontext
或许查看相关实体的缓存策略。但是,从您的代码段我不确定您的查询是否非常一致。这更可能是导致此问题的原因:https://developers.google.com/appengine/docs/python/datastore/structuring_for_strong_consistency