2017-04-26 34 views
1

到目前爲止,我有超過200個Google Analytics(分析)帳戶來提取信息。我已使用限制數量的帳戶(僅限10個)測試了我的解決方案。 一旦我把所有的帳號ID都放在我的邏輯裏,它會給我錯誤配額限制每100秒100次請求Google AnalyticsAPI |每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 
    } 
} 

如何控制請求數量?爲了避免得到這些錯誤?

回答

0

配額限制每100秒100次請求。

它基本上是防洪你要快。您最多可以在100秒內完成100個請求。你可以做什麼,也許最簡單的解決方案將是Implementing Exponential Backoff

我在我的應用程序進一步,雖然。我創建了一個請求隊列(最多100個項目)。我將請求的時間記錄到毫秒。在我發送一個請求之前,我會檢查que中第一個和最後一個項目之間的時間差異,如果它超過95秒,我會暫停它的差異。這並沒有完全阻止我獲得這些錯誤,但它已經大幅降低了他們。

+0

所以,我們可以說,如果我使用這些隊列解決方案和explonential回退,我可以設法避免這些錯誤?假設我大幅減少它們,但仍然有一個或另一個錯誤,我可以捕捉它們並執行指數退避並再次重試。 – bmvr

+0

這就是我所做的,如果我得到一個我只是重試它。我只是不喜歡這樣,所以我增加了Que的想法來進一步減少它們。 Google實際上只是建議您實施退款。如果您喜歡我並且不喜歡在開發者控制檯中看到報告中的錯誤,您不必添加它就可以了。 – DaImTo