创建多个Google日历并避免403:超出速率限制

时间:2019-08-13 10:27:12

标签: java google-calendar-api http-status-code-403 google-api-java-client batch-request

我需要使用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();

0 个答案:

没有答案
相关问题