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 的配置文件配额。
然而,当我查看开发人员控制台时,我可以看到以下内容:
我认为我的选择如下:
将间隔增加到 1 分钟((60 x 12) x 9 个请求,每个视图 = 6480),这样就不会超过配置文件配额。但这并不能真正使仪表板实时化。
创建一个服务器,运行查询(间隔增加 1 分钟),将结果保存到数据库中。仪表板向数据库发出 GET 请求。这样多台电视屏幕应该可以请求数据了。
问题:我是否也可以创建多个服务帐户,并在达到限制时切换到其他服务帐户,或者这不会修复 profileid 限制吗?
DailylimitExceded 可能意味着以下两种情况之一。
您每天只能对一个视图发出 10000 个请求。您与其他开发人员共享的此配额。因此,如果我总共安装了您的应用程序和其他人的应用程序,那么每天只能针对我的 Google 分析视图发出 10000 个请求,然后这两个应用程序都会收到该错误。如果您提出这些请求,您应该将数据存储在数据库中,这样您就不需要再次请求相同的信息。即使它是试图在同一视图上查看数据的不同用户。您可能无法在 Google 开发人员控制台中跟踪此配额命中。
第二个问题是,默认情况下,应用程序每天最多可以对所有视图发出 50000 个请求。这意味着如果您有 5 个用户并且您每天为每个用户发出 10000 个请求,那么您已经达到了请求的限制。我不认为这是你要打的。
基于用户的第一个配额,您无能为力,不能扩展它。您需要限制请求,以免阻止用户帐户。第二个你可以在 Google 开发者控制台申请延期当你达到当前每日配额的 80% 左右时,可能需要一段时间才能获得你应该申请的延期。
这里最主要的是你不应该两次请求相同的数据。如果您发出了请求,您应该保存它并向您的用户显示存储的数据,而不是仅仅再次请求它。那和实时 api 你不应该尝试每 5 分钟请求一次,因为你会吃掉我们的配额。
我曾多次向 Google 建议实时 api 应该有自己的配额,而不是与报告 api 相同。我还在等他们添加这个功能。
我使用 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 的配置文件配额。
然而,当我查看开发人员控制台时,我可以看到以下内容:
我认为我的选择如下:
将间隔增加到 1 分钟((60 x 12) x 9 个请求,每个视图 = 6480),这样就不会超过配置文件配额。但这并不能真正使仪表板实时化。
创建一个服务器,运行查询(间隔增加 1 分钟),将结果保存到数据库中。仪表板向数据库发出 GET 请求。这样多台电视屏幕应该可以请求数据了。
问题:我是否也可以创建多个服务帐户,并在达到限制时切换到其他服务帐户,或者这不会修复 profileid 限制吗?
DailylimitExceded 可能意味着以下两种情况之一。
您每天只能对一个视图发出 10000 个请求。您与其他开发人员共享的此配额。因此,如果我总共安装了您的应用程序和其他人的应用程序,那么每天只能针对我的 Google 分析视图发出 10000 个请求,然后这两个应用程序都会收到该错误。如果您提出这些请求,您应该将数据存储在数据库中,这样您就不需要再次请求相同的信息。即使它是试图在同一视图上查看数据的不同用户。您可能无法在 Google 开发人员控制台中跟踪此配额命中。
第二个问题是,默认情况下,应用程序每天最多可以对所有视图发出 50000 个请求。这意味着如果您有 5 个用户并且您每天为每个用户发出 10000 个请求,那么您已经达到了请求的限制。我不认为这是你要打的。
基于用户的第一个配额,您无能为力,不能扩展它。您需要限制请求,以免阻止用户帐户。第二个你可以在 Google 开发者控制台申请延期当你达到当前每日配额的 80% 左右时,可能需要一段时间才能获得你应该申请的延期。
这里最主要的是你不应该两次请求相同的数据。如果您发出了请求,您应该保存它并向您的用户显示存储的数据,而不是仅仅再次请求它。那和实时 api 你不应该尝试每 5 分钟请求一次,因为你会吃掉我们的配额。
我曾多次向 Google 建议实时 api 应该有自己的配额,而不是与报告 api 相同。我还在等他们添加这个功能。