2017-04-26 2 views
1

지금까지 200 개 이상의 Google Analytics 계정으로 정보를 가져 왔습니다. 제한된 수의 계정으로 솔루션을 테스트했습니다 (단 10 개). 일단 모든 계정 ID를 논리에 입력하면 할당량 한도가 100 초당 100 개 요청됩니다..Google 애널리틱스 API | 100 초당 100 req의 할당량 한도 처리

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

저는 제 신청서에 더 나아갔습니다. 요청 que (최대 100 개 항목)를 만들었습니다. 나는 밀리 세컨드까지 요청한 시간을 기록한다. 요청을 보내기 전에 큐의 첫 번째 항목과 마지막 항목의 시간차를 확인한 다음 95 초 이상 차이가 나는지 확인합니다. 이 오류가 발생하는 것을 완전히 막지는 못했지만 그 오류가 크게 줄어 들었습니다.

+0

그렇다면 이러한 큐 솔루션과 explonential backoff를 함께 사용하면 이러한 오류를 피할 수 있습니다. 말하자면 나는 그것들을 과감하게 줄 였지만, 여전히 하나 또는 그 이상의 오류가있다. 나는 그것들을 붙잡고 지수 적 백 오프를하고 다시 시도 할 수있다. – bmvr

+0

그게 전부 일 뿐이에요. 실제로 시도해도됩니다. 나는 그저 내가 그토록 많은 것을 얻고 있다는 것을 알지 못했기 때문에 그들을 더 줄이기 위해 그 생각을 덧붙였다. Google은 실제로 실제로 구현을 권장합니다. 개발자 콘솔에서 보고서의 오류를보고 싶으면 그냥 의존하는 큐를 추가하지 않아도됩니다. – DaImTo