我需要使用Java和Google Calendar API在一个Google帐户上最多创建130个日历,但是不断获得
“ 403:超出速率限制”。
我尝试过的:
-循环 service.insert(calendar).execute(); ->结果:25次插入后收到错误403(很奇怪,这似乎是旧限制,根据https://support.google.com/a/answer/2905486?hl=en应该为60)
循环,每个请求之间有延迟(最长60秒) ->结果:未更改结果。 25次插入后仍为403(在有关指数补偿的文档中,Google谈论的仅是几秒钟,所以即使我不按比例增加该延迟,我也应该认为1分钟就足够了。)
-请求批处理(遵循THIS Google示例代码) ->结果:大约进行10次回调后,响应将进入带有onFailure方法的..您猜中了它的403状态代码。
我认为大部分时间我都在API配额的最大范围内。经过几次测试,我只看到过一次“ quotaExceeded”。
批次请求示例:
batch = this.service.batch();
JsonBatchCallback<Calendar> callback = new JsonBatchCallback<Calendar>(){
@Override
public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) throws HttpResponseException{
log.debug(e);
throw new HttpResponseException(Integer.valueOf(e.get("code").toString()), e.getMessage());
}
@Override
public void onSuccess(Calendar cal, HttpHeaders responseHeaders) {
log.debug("Calendrier créé pour " + cal.getSummary());
}
};
for( String user : usernameList ) {
cal = new Calendar().setSummary(user);
this.service.calendars().insert(cal).queue(batch, callback);
}
batch.execute();