【问题标题】:Django + AppEngine counting more the 1000 recordsDjango + AppEngine 计算更多的 1000 条记录
【发布时间】:2016-02-13 05:53:28
【问题描述】:

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

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

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

谢谢。
内塔内尔

【问题讨论】:

    标签: django google-app-engine


    【解决方案1】:

    该限制已在较新版本的 SDK 中移除,因此您可能需要检查并升级。

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

    看看其他更具可扩展性的方法,例如 map reduce(计数并存储分钟数,然后是每小时,然后是天,然后是周,然后是月等)或 sharded counter

    【讨论】:

      【解决方案2】:
      Model.gql("WHERE creation_date >= :start_date AND creation_date <= :end_date", 
                  start_date=startdate, end_date=enddate).count()
      

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

      您正在使用至少 v1.3.6 的 SDK,因为这是取消计数限制的地方?

      【讨论】:

        猜你喜欢
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        • 2010-10-22
        • 2021-12-31
        • 2021-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多