Django + AppEngine计算了1000条记录

时间:2010-11-03 11:23:48

标签: django google-app-engine

我正在尝试计算我的数据库中在某些日期之间创建的实体数量。

我知道谷歌删除了每次查询获取超过1000个结果的限制,但每次我尝试使用远程api时,我只获得1000个结果计数。

有没有人知道如何计算更多1000个实体以检查我有多少实体?

感谢。
Netanel

2 个答案:

答案 0 :(得分:3)

最新版本的SDK已删除此限制,因此您可能需要检查并升级。

这仍然不能完全解决你的问题,但是...问题是GAE计数查询是一个非常糟糕的主意 - 因为这不是一个表(它更像是一个分布式数组)每当你做计数它实际上必须击中(并且可能是fetch,我不确定)每个与您的查询匹配的对象。这是一个非常昂贵的操作,所以如果你做了很多,你就会不必要地耗尽资源。如果你有足够的对象,你甚至可能达到30秒的请求限制。

看看其他更具伸缩性的方法,例如地图缩小(计算和存储分钟数,然后是每小时,然后是天,然后是星期,然后是月等)或sharded counter

答案 1 :(得分:1)

Model.gql("WHERE creation_date >= :start_date AND creation_date <= :end_date", 
            start_date=startdate, end_date=enddate).count()

应返回查询匹配的实体数,即使您的查询数超过1000个。

您至少使用SDK的v1.3.6,因为这是删除了计数限制的地方?