我已经使用Google Analytics 2个月了。我使用NodeJS(快速/无服务器)创建了一个自定义仪表板,其中包含来自Core Reporting API和Real Time Reporting 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次(图像中的每个块都是查询调用)。我想我可以将“在线用户”,“今日用户”和“今日网页浏览”电话合并为一个电话。今天的搜索和今天的订单由过滤器指定,用于搜索特定事件。
我有一个timechecker构建版本,可以在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请求a 一天。
我认为我不应该达到50.000配额。但我从10.000到达配置文件配额。
但是,当我查看开发人员控制台时,我可以看到以下内容:
我认为我的选择如下:
将间隔增加到1分钟((60 x 12)x 9个请求每个视图= 6480),这样就不应超出配置文件配额。但这并不能让仪表板真正实时。
创建一个运行查询的服务器(间隔增加1分钟),将结果保存到数据库中。仪表板向数据库发出GET请求。这样多个电视屏应该能够请求数据。
问题:我是否还可以创建多个服务帐户,并在达到限制时切换到其他服务帐户,或者这是否修复了profileid限制?
答案 0 :(得分:3)
DailylimitExceded可能意味着两件事之一。
您每天只能对一个视图发出10000个请求。您与其他开发者共享的此配额。因此,如果我安装了您的应用程序,并且总共会有人使用该应用程序,则每天只能对我的Google分析视图发出10000个请求,然后这两个应用都会收到该错误。如果您要发出这些请求,则应将数据存储在数据库中,这样您就不需要再次请求相同的信息。即使是尝试在同一视图上查看数据的不同用户。您可能无法在Google Developer Console中跟踪此配额命中。
第二个问题是,默认情况下,应用程序每天最多可以在所有视图中发出50000个请求。这意味着,如果您有5个用户,并且每天为每个用户发出10000个请求,则表示您已达到请求的限制。我不认为这是你要打的。
用户所基于的第一个配额没有什么可以做的,你不能扩展它。您需要限制您的请求,以免您阻止用户帐户。您可以在Google Developer Console中申请延期的第二个,当您达到当前每日配额的80%时,可能需要一段时间才能获得应该申请的分机。
这里最重要的是你不应该两次请求相同的数据。如果您已提出请求,则应将其保存并向用户显示存储的数据,而不是仅再次请求它。那个和实时的api你不应该试图从每5分钟开始请求,因为你将吃掉我们的配额。
我曾多次向Google建议实时api应该是自己的配额,而不是与报告API相同。我还在等他们添加这个功能。