0

我有一个名为“Obj”的 Google App Engine 数据存储类型,它在生产中拥有近 50 万个实体。我试图只查询 50 个 Obj 实体,但即使我将 limit 参数设置为 50,查询最终也会引发错误“超出软私有内存限制”。

这与在查询中使用 ndb.GenericProperty 有关吗?作为日期时间类型的属性“trashed_date”通常不是 Obj 的属性。我还手动为状态和垃圾日期创建了正确的索引。“trashed_date”是否应该始终是该模型的属性?

下面是我正在使用的代码,当只查询 50 个不超过内存限制的实体时,我该怎么办?

q = Obj.query(
    Obj.status == 1,
    ndb.GenericProperty('trashed_date') < expire_date
)
results = q.fetch(50)
4

1 回答 1

3

请尝试使用 q.iter() 和一个计数器将其限制为 50。我在 fetch() 上遇到了类似的问题,并使用 iter() 修复了它。GAE 现在非常强烈地建议不要使用 fetch。YMMV。HTH。-史蒂夫

于 2013-08-17T17:17:05.150 回答