Google API dailyLimitExceeded 解决方案

Google API dailyLimitExceeded solutions

我使用 Google Analytics 已经 2 个月了。我使用 NodeJS (express/serverless) 创建了一个自定义仪表板,从核心报告 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 次(图中的每个块都是一个查询调用)。我想我可以将 'Online users'、'Users today' 和 'pageviews today' 调用合并为一个调用。今天的搜索和今天的订单由用于搜索特定事件的过滤器指定。

我有一个时间检查器,它允许在 07:00 和 19:00 之间查看仪表板。当它早于 07:00 或晚于 19:00 时,变量 checkTime 设置为 false,这使得仪表板显示 div,文本类似于 "dashboard offline"。当有人在允许的时间范围内访问了仪表板时,变量 checkTime 将设置为 true 并且可以调用 Google API。

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

假设有

60 minutes x 3 = 180 x 12 = 2160 x 9(requests) = 19440 requests for a day.

我认为我不应该达到 50.000 的配额。但是我已经达到了 10.000 的配置文件配额。

然而,当我查看开发人员控制台时,我可以看到以下内容:

我认为我的选择如下:

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

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

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

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

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

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

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