【问题标题】:Google API dailyLimitExceeded solutionsGoogle API dailyLimitExceeded 解决方案
【发布时间】:2018-01-09 09:10:10
【问题描述】:

我使用 Google Analytics(分析)已经 2 个月了。我使用 NodeJS(快速/无服务器)创建了一个自定义仪表板,从核心报告 API 和实时报告 API 请求数据。我设法将它作为 AWS 上的 Lambda 函数。虽然我对此感到非常高兴,但我现在面临一些问题。

我收到以下错误:

{  
   "error":{  
      "errors":[  
         {  
            "domain":"global",
            "reason":"dailyLimitExceeded",
            "message":"Quota Error: profileId ga:NNNNN has exceeded the daily request limit."
         }
      ],
      "code":403,
      "message":"Quota Error: profileId ga:NNNNN has exceeded the daily request limit."
   }
}

{  
   "error":{  
      "errors":[  
         {  
            "domain":"usageLimits",
            "reason":"userRateLimitExceeded",
            "message":"User Rate Limit Exceeded"
         }
      ],
      "code":403,
      "message":"User Rate Limit Exceeded"
   }
}

我的仪表板如下所示:

当仪表板被访问时,它会调用实时 api 9 次(图像中的每个块都是一个查询调用)。我想我可以将“在线用户”、“今天的用户”和“今天的综合浏览量”调用合并为一个调用。今天的搜索和今天的订单由用于搜索特定事件的过滤器指定。

我有一个时间检查器,它允许在 07:00 到 19:00 之间查看仪表板。当它早于 07:00 或晚于 19:00 时,变量 checkTime 设置为 false,这使得仪表板显示一个带有文本的 div,例如“仪表板脱机”。当有人在允许的时间范围内访问仪表板时,变量 checkTime 被设置为 true,并且可以调用 Google API。

仪表板在 07:00 到 19:00 之间在电视屏幕上运行。这意味着仪表板在电视屏幕上的显示时间长达 12 小时。每 20 秒有一个函数调用来更新所有数据(因此再次发出 9 个请求)。

假设有

60 分钟 x 3 = 180 x 12 = 2160 x 9(请求数)= 19440 次请求 天。

我认为我不应该达到 50.000 个配额。但是我从 10.000 达到个人资料配额。

但是,当我查看开发者控制台时,我可以看到以下内容:

我认为我的选择如下:

  • 将间隔增加到 1 分钟((60 x 12) x 9 请求每个视图 = 6480),这样就不应该超过配置文件配额。但这并不能真正使仪表板变得实时。

  • 创建一个运行查询的服务器(增加 1 分钟的间隔),将结果保存到数据库中。仪表板向数据库发出 GET 请求。这样多个电视屏幕应该能够请求数据。

问题:我是否也可以创建多个服务帐户,并在达到限制时切换到其他服务帐户,或者这不能修复 profileid 限制?

【问题讨论】:

    标签: node.js google-analytics google-api google-analytics-api quota


    【解决方案1】:

    DailylimitExceded 可能意味着两种情况之一。

    您每天只能针对单个视图发出 10000 个请求。您与其他开发人员共享的此配额。因此,如果我总共安装了您的应用程序和其他人的应用程序,那么每天只能针对我的 Google 分析视图发出 10000 个请求,然后这两个应用程序都会收到该错误。如果您提出这些请求,您应该将数据存储在数据库中,这样您就不需要再次请求相同的信息。即使它是尝试在同一视图上查看数据的不同用户。您可能无法在 Google Developer 控制台中跟踪此配额命中情况。

    第二个问题是,默认情况下,应用程序每天最多可以在所有视图中发出 50000 个请求。这意味着,如果您有 5 个用户,并且您每天为每个用户发出 10000 个请求,那么您已经达到了请求的限制。我不认为这是你要打的。

    基于用户的第一个配额,您无能为力,无法扩展它。您需要限制您的请求,以免阻止用户帐户。第二个你可以在谷歌开发者控制台中申请一个扩展,当你达到当前每日配额的 80% 左右时,你可能需要一段时间才能获得你应该申请的扩展。

    这里的主要内容是您不应该两次请求相同的数据。如果您提出了请求,您应该保存它并向您的用户显示存储的数据,而不仅仅是再次请求。那个和实时 api 你不应该尝试超过每 5 分钟一次,因为你会吃掉我们的配额。

    我多次向 Google 建议实时 api 应该有自己的配额,而不是与报告 api 相同。我仍在等待他们添加此功能。

    【讨论】:

    • 感谢您的快速回答。所以我应该创建一个数据库,将结果存储到其中并向它发出 GET 请求以显示在仪表板上?
    • 确实是您唯一的选择。如果您有多个用户查看同一个视图,那么 10000 的限制真的很难解决。
    猜你喜欢
    • 2018-08-07
    • 2017-08-03
    • 2012-09-07
    • 2016-12-03
    • 2017-08-26
    • 2019-06-23
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多