2013-08-16 50 views
6

我知道那裏有配額:https://code.google.com/apis/console 但這些是每日配額。在那裏我每天看到10,000個查詢(Courtesy Limit)。 其實我的計劃使每小時170-190的請求,接收來自Google+的API這樣的響應後:再做170-190Google+ API是否有任何小時費率限制?

{ 
"code" : 403, 
"errors" : [ { 
"domain" : "usageLimits", 
"message" : "Rate Limit Exceeded", 
"reason" : "rateLimitExceeded" 
} ], 
"message" : "Rate Limit Exceeded" 
} 

1個小時後,直到計劃得到同樣的錯誤。但每小時* 24小時的請求數量遠遠不到10,000。

我使用的方法people.search和google-api-java-client庫版本1.15.0-rc。 初始化Plus服務象下面這樣:

HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
     JsonFactory jsonFactory = new JacksonFactory(); 
     GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport) 
       .setJsonFactory(jsonFactory) 
       .setServiceAccountId(EMAIL) 
       .setServiceAccountScopes(Collections.singleton(PlusScopes.PLUS_LOGIN)) 
       .setServiceAccountPrivateKeyFromP12File(KEY_FILE)) 
       .build(); 
     Plus plus = new Plus.Builder(httpTransport, jsonFactory, credential) 
       .setApplicationName(APP_NAME).build(); 

而且使用這樣的搜索方法:

Plus.People.Search searchPeople = people.search(fullname); 
    searchPeople.setMaxResults(50L); 
    searchPeople.setFields("items(id),nextPageToken"); 
    PeopleFeed peopleFeed = searchPeople.execute(); 
while (true) { 
     if (peopleFeed.getItems().size() == 0) { 
      break; 
     } 

     /* Save people info here */ 

     if (peopleFeed.getNextPageToken() == null) { 
      break; 
     } 
     try { 
      Thread.sleep(500); 
     } catch (InterruptedException e) { } 
     searchPeople.setPageToken(peopleFeed.getNextPageToken()); 
     peopleFeed = searchPeople.execute(); 
    } 

我試過睡眠時間更改爲1秒或2秒 - 相同的行爲。 試圖重新生成密鑰文件 - 沒有運氣。

我做錯了什麼嗎?

回答

8

的問題有三個方面:

  1. 限速爲每天(10,000)都每秒(5)。
  2. 錯誤消息在類型之間共享。
  3. 直到未提供下一個窗口的時間。

因此,我有我的應用程序等待rand(1,5)秒,如果他們再次率有限,我試之前等待3600秒。

+0

我已經完成了類似的解決方案 - 請求之間的一點點等待,如果捕獲率限制很大。目前看來,目前還沒有更好的解決方案。 – sil3

+0

那麼他們爲什麼會提供批量請求呢?每次執行批量請求時,我的速度都受到限制。 –

1

如果您轉到您指定的API控制檯的Quotas鏈接,它會打破每個API的應用使用量的每日限制,但也會列出每個用戶的配額。例如,我目前顯示

 
    Google+ API 5.0 requests/second/user 

在一般情況下,他們的API端點可以允許陣陣比這更多,這應該被認爲是一種估計,但超出此限制延長的持續時間可能會導致頻率超過上限錯誤,您看到。

+0

感謝您的回答。是的,我的5.0個請求/秒/用戶也是。但是我使用等待時間(_Thread.sleep()_)來保持這個速度。目前我是這個應用程序的唯一用戶。 – sil3

相關問題