代码之家  ›  专栏  ›  技术社区  ›  Elvira

Google API dailyLimitExceeded解决方案

  •  1
  • Elvira  · 技术社区  · 7 年前

    我已经在Google Analytics工作了2个月了。我用NodeJS(express/serverless)创建了一个自定义仪表板,并从核心报告API和实时报告API中请求数据。我成功地将其作为Lambda函数放在AWS上。虽然我对此感到非常高兴,但我现在面临一些问题。

    我发现以下错误:

    {  
       "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"
       }
    }
    

    我的仪表板如下所示:

    enter image description here

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

    我有一个内置的计时器,可以在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分钟x 3=180 x 12=2160 x 9(请求)=19440个请求 白天

    我认为我不应该达到50000个配额。但我的个人资料配额已经从10000达到了。

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

    enter image description here

    enter image description here

    enter image description here

    我认为我的选择如下:

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

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

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   Linda Lawton - DaImTo    7 年前

    DailyLimitExceed可能意味着两件事之一。

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

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

    第一个配额是基于用户的配额,您无法对其进行任何扩展。您需要限制您的请求,以便不阻止用户帐户。第二个,你可以在谷歌开发者控制台申请扩展。当你达到当前每日配额的80%左右时,你可能需要一段时间才能获得扩展。

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

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

    推荐文章