我知道那裏有配額: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秒 - 相同的行爲。 試圖重新生成密鑰文件 - 沒有運氣。
我做錯了什麼嗎?
我已經完成了類似的解決方案 - 請求之間的一點點等待,如果捕獲率限制很大。目前看來,目前還沒有更好的解決方案。 – sil3
那麼他們爲什麼會提供批量請求呢?每次執行批量請求時,我的速度都受到限制。 –