API Календаря Google - более глубокое понимание ошибок использования календарей, превышение количества ошибок - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть приложение, которое работает с 2015 года. Оно читает и записывает приблизительно в 16 календарей через служебную учетную запись, используя библиотеку Google node.js (calendar v3 API).У нас также есть G Suite for Education.

Общий процесс:

  • Каждые 30 секунд он кэширует все данные календаря с помощью операции списка
  • Периодически ученик будетзапрашивая «слот» встречи, он сначала проверяет, открыт ли слот (посредством вызова по списку), а затем вставку.

Это все, что он делает.Он работал нормально до последних нескольких дней, когда вызовы API insert начали давать сбои:

{
    "code": 403,
    "errors": [{
        "domain": "usageLimits",
        "reason": "quotaExceeded",
        "message": "Calendar usage limits exceeded."
    }]
}

Это не так уж много особенного - в документации есть три "решения":

  • Подробнее об ограничениях использования календаря в справке администратора G Suite.
  • Если один пользователь делает много запросов от имени многих пользователей домена G Suite, рассмотрите возможность использования службы.Учетная запись с делегированием полномочий (установка параметра quotaUser).
  • Использовать экспоненциальный откат.
  1. Я не превышаю ни одного из указанных пределов, насколько ямогу сказать.
  2. Хотя я использую служебную учетную запись, она не выполняет запрос от имени пользователя.Учетная запись службы имеет доступ для записи в календарь и добавляет пользователя в качестве участника
  3. Наконец, я не думаю, что экспоненциальный откат поможет, хотя я не реализовал это.Время между запросом на вставку и следующим вызовом вставки измеряется в секундах, а не в миллисекундах.Кроме того, просто выполнение вызовов непосредственно из командной строки с помощью простого скрипта приводит к той же проблеме.

Некоторые характеристики:

2015 - 2,466 inserts, 186 errors
2016 - 25,747 inserts, 237 errors
2017 - 42,815 inserts, 225 errors
2018 - 41,390 inserts, 1,074 errors (990 of which are in the past 3 days)

Я обновлял код за эти годы, ноэтот термин в значительной степени не затронутпоследующие вызовы задерживаются на секунды и обрабатываются в очереди, которая последовательно обрабатывает запросы.Единственными одновременными запросами будут операции со списком.

...