2

我需要使用 Java 和 Google 日历 API 在 Google 帐户上创建多达 130 个日历,但不断获取

“403:超出速率限制”。

我试过的:

- 使用 service.insert(calendar).execute() 循环;-> 结果:插入 25 次后我收到错误 403(奇怪的是,这似乎是旧的限制,根据:https ://support.google.com/a/answer/2905486?hl=en 应该是 60 )

- 每个请求之间的延迟循环(最多 60 秒)-> 结果:没有改变结果。插入 25 次后仍然为 403(在其关于指数退避的文档中,谷歌只讨论了几秒钟,所以我应该认为 1 整分钟就足够了,即使我没有以指数方式增加延迟)。

-请求批处理(遵循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();
4

0 回答 0