Создание нескольких календарей Google и обход 403: превышен лимит
Мне нужно создать до 130 календарей в учетной записи Google, используя Java и API Календаря Google, но я продолжаю получать
"403: Превышен предел скорости".
Что я пробовал:
-перемещение с service.insert(calendar).execute(); -> результат: я получаю ошибку 403 после 25 вставок (что, как ни странно, похоже на старое ограничение, должно быть 60 в соответствии с: https://support.google.com/a/answer/2905486?hl=en)
-перемещение с задержкой между каждым запросом (до 60 секунд) -> результат: не изменил результат. по-прежнему 403 после 25 вставок (в своей документации об экспоненциальном отсрочке Google говорит о простых секундах, поэтому я должен думать, что достаточно одной целой минуты, даже если я не увеличиваю экспоненциально эту задержку).
- Запросить пакетирование (следуя Этому примеру с кодом 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();