API Календаря Google имеет квоты, позволяющие гарантировать его справедливое использование всеми пользователями. При использовании API календаря следует учитывать три важных ограничения:
- Квоты на использование API применяются для каждого проекта и для каждого пользователя. Дополнительную информацию смотрите в следующем разделе.
- Общие ограничения на использование Календаря . Избегайте ограничений на использование Календаря .
- Операционные ограничения: в любой момент вы можете быть ограничены по ставке. Например, если вы попытаетесь быстро записать запись в один календарь.
Типы квот на использование Calendar API
Применяются два типа квот:
- В минуту на проект: это количество запросов, сделанных вашим проектом Google Cloud.
- В минуту на проект на пользователя: это количество запросов, сделанных любым конкретным пользователем в вашем облачном проекте. Это ограничение призвано помочь вам обеспечить справедливое распределение использования между вашими пользователями.
Квоты рассчитываются поминутно с использованием скользящего окна, поэтому быстрый всплеск трафика, превышающий вашу поминутную квоту в течение одной минуты, приведет к ограничению скорости в следующем окне, чтобы гарантировать, что в среднем ваше использование останется в пределах квот.
Если какая-либо из квот превышена, ваша скорость ограничена, и на ваши запросы вы получаете код состояния 403 usageLimits
или код состояния 429 usageLimits
. Если это произойдет, вот что вы можете сделать:
- Убедитесь, что вы следуете всем лучшим практикам: используйте экспоненциальную отсрочку , рандомизируйте шаблоны трафика , используйте push-уведомления .
- Если ваш проект растет и у вас больше пользователей, вы можете запросить увеличение квоты для каждого проекта .
- Если лимит квоты на пользователя достигнут, вы можете сделать следующее:
- Если вы используете учетную запись службы, распределите нагрузку между пользователями или разделите ее между несколькими учетными записями служб.
- Хотя вы можете запросить увеличение квоты для каждого пользователя, в целом не рекомендуется увеличивать ее выше значения по умолчанию, поскольку ваше приложение может начать нарушать другие типы ограничений, например общие ограничения на использование календаря или эксплуатационные ограничения.
Запрос на увеличение квоты
Чтобы просмотреть или изменить ограничения использования для вашего проекта или запросить увеличение квоты, выполните следующие действия:
- Если у вас еще нет платежного аккаунта для вашего проекта, создайте его.
- Посетите страницу «Включенные API» библиотеки API в консоли API и выберите API из списка.
- Чтобы просмотреть и изменить настройки, связанные с квотами, выберите «Квоты» . Чтобы просмотреть статистику использования, выберите «Использование» .
Используйте экспоненциальную отсрочку
Если мы хотим, чтобы вы снизили скорость запросов, мы вернем ответ 403 «usageLimits» или ответ 429 (см. полную документацию по ошибкам ). Это не фатальная ошибка, и мы ожидаем, что вы повторите запрос через небольшой промежуток времени. Если запросы по-прежнему поступают слишком быстро, мы спросим еще раз и так далее. Чтобы это работало корректно, важно, чтобы задержки между запросами со временем увеличивались.
Как правило, вам следует использовать усеченную экспоненциальную отсрочку ; в документации Cloud Storage есть хорошее объяснение того, как это работает, и предпочтительный алгоритм. Если вы используете клиентскую библиотеку Google, это обычно будет сделано за вас; обратитесь к документации вашей библиотеки. Обычно вам следует использовать реализацию библиотеки, а не писать свою собственную.
Рандомизировать шаблоны трафика
Клиенты календаря склонны к скачкам трафика, вызванным одновременным выполнением операций несколькими клиентами. Например, распространенной плохой практикой для клиента Календаря является выполнение полной синхронизации в полночь. Это почти наверняка приведет к превышению поминутной квоты и приведет к ограничению скорости и отсрочке передачи данных.
Чтобы избежать этого, убедитесь, что ваш трафик распределен в течение дня, где это возможно. Если вашему клиенту необходимо выполнять ежедневную синхронизацию, попросите его определить случайное время (различное для каждого клиента). Если вам необходимо выполнять операцию регулярно, варьируйте интервал +/- 25%. Это позволит распределить трафик более равномерно и обеспечить гораздо лучший пользовательский опыт.
Используйте push-уведомления
Распространенным вариантом использования является желание выполнить действие всякий раз, когда что-то меняется в календаре пользователя. Противопаттерном здесь является повторный опрос каждого интересующего календаря. Это очень быстро израсходует всю вашу квоту — например, если ваше приложение имеет 5000 пользователей и опрашивает календарь каждого пользователя раз в минуту, то для этого потребуется поминутная квота не менее 5000 даже до того, как будет выполнена какая-либо работа.
Серверные приложения могут регистрироваться для получения push-уведомлений, что позволяет нам уведомлять вас, когда происходит что-то интересное. Для их настройки требуется больше работы, но они позволяют значительно более эффективно использовать вашу квоту и обеспечивают лучший пользовательский опыт. Обязательно укажите eventType
, о котором вы хотите получать уведомления. Дополнительную информацию см. в разделе Push-уведомления .
Правильный учет со счетами сервисов
Если ваше приложение выполняет запросы с использованием делегирования на уровне домена , по умолчанию с учетной записи службы взимается плата в соответствии с квотами «поминутно на проект на пользователя», а не с учетом пользователя, которого вы олицетворяете. Это означает, что учетная запись службы, скорее всего, исчерпает квоту и будет ограничена по скорости, даже если она может работать с календарями нескольких пользователей. Этого можно избежать, используя URL-параметр quotaUser
(или HTTP-заголовок x-goog-quota-user
), чтобы указать, с какого пользователя будет взиматься плата. Используется только для расчета квот. Дополнительную информацию см. в разделе «Ограничение количества запросов на пользователя» в документации Cloud.
Тестирование обработки лимита квоты
Чтобы гарантировать, что ваше приложение сможет корректно справляться с достижением пределов квоты на практике (например, путем выполнения повторных попыток с экспоненциальной задержкой ) и минимизировать любые потенциальные помехи для ваших пользователей, мы настоятельно рекомендуем протестировать этот сценарий в реальной среде.
Чтобы такой тест не мешал реальному использованию вашего приложения, мы рекомендуем зарегистрировать в консоли Google API отдельный проект, предназначенный только для тестирования, и настроить его аналогично вашему производственному проекту. Затем вы можете установить для этого проекта искусственно заниженные квоты и наблюдать за поведением вашего приложения.
Цены
Все возможности использования API Календаря Google доступны без дополнительной оплаты. Превышение пределов запроса квоты не влечет за собой дополнительных расходов, и с вашей учетной записи не будет взиматься плата.