Google AnalyticsAPI |处理每100秒100 req的配额限制

时间:2017-04-26 13:26:06

标签: google-analytics google-api google-analytics-api quota

到目前为止,我有超过200个谷歌分析帐户来提取信息。我用限制数量的帐户(只有10个)测试了我的解决方案。 一旦我将所有帐户ID放入我的逻辑中,就会出现配额限制每100秒100个请求的错误。

 foreach (var viewID in _viewIds)
 {
     foreach (var dateRange in dateRanges)
     {
         tTaskList.Add(Task.Run(async () =>
         {
            try
            {  var tReports = await gc.PostAsyncTask(url, reportRequest);

                foreach (var report in tReports.reports)
                {
                    if (report != null)
                    {
                    //All report logic here
                    //(...)

                        bool hasNextPage = false;
                        do
                        {
                            //All pagination logic here
                            //(...)
                        }while(hasNextPage);
                    }
                }
            }
            catch (Exception ex)
            {
                //Write in Log
                var ex_message = Common.Utils.GetExceptionMessage(ex);
                Logger.WriteConsoleLog(ex_message.MessageString, (int)Logger.Logs.ERROR, APIName, RequestID);
            }        
         })
         ); //end add task
     }
 }

如何控制请求数量?为避免出现这些错误?

1 个答案:

答案 0 :(得分:0)

  

配额限制每100秒100个请求。

它基本上是防洪你要快。您最多可以在100秒内完成100个请求。您可以做什么,可能最简单的解决方案是Implementing Exponential Backoff

我在申请中更进了一步。我创建了一个请求队列(最多100个项目)。我将请求的时间记录到毫秒。在我发送请求之前,我检查了que中第一个和最后一个项目之间的时间差,如果它超过95秒我暂停它以获得差异。这并没有完全阻止我得到这些错误,但它已经大大减少了它们。