[英]Does Google+ API have any hourly rate limit?
我知道那里有配額: https : //code.google.com/apis/console但這些是每日配額。 在那里,我每天看到10,000個查詢(Courtesy Limit)。 實際上,我的程序在收到Google+ API的響應后,每小時會收到170-190個請求:
{
"code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "Rate Limit Exceeded",
"reason" : "rateLimitExceeded"
} ],
"message" : "Rate Limit Exceeded"
}
1小時后程序再次執行170-190直到得到相同的錯誤。 但每小時190個請求* 24小時遠遠不是10,000個。
我正在使用方法people.search和google-api-java-client庫版本1.15.0-rc。 Initialize 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秒 - 同樣的行為。 試圖重新生成密鑰文件 - 沒有運氣。
我做錯了嗎?
問題有三個:
因此,我的應用程序等待rand(1,5)
秒,如果它們再次受到速率限制,我會等待3600
秒再重試。
如果您轉到您指定的API控制台的Quotas
鏈接,它將分解您的應用使用每個API的每日限額,但也會列出每用戶配額。 例如,我的目前顯示
Google+ API 5.0 requests/second/user
通常,它們的API端點可能允許突發更多,這應該被視為估計值,但是在延長的持續時間內超過此限制可能會導致超出速率限制的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.