Ограничения частоты запросов

Обзор

Независимо от того, распространяется ли токен через портал разработчиков, предоставление OAuth или серверную часть Accounts, которая обслуживает собственные приложения Frame.io, все вызовы API к Frame.io имеют ограничения частоты запросов. Ограничения частоты запросов применяются ко всем запросам API от отдельного пользователя (независимо от того, какой токен или метод аутентификации используется), расходуются и пополняются постепенно, и отражаются в заголовках ответов каждого запроса к API-интерфейсу Frame.io. Для каждой конечной точки настроены собственные ограничения, которые варьируются от 10 запросов/минуту до 100 запросов/секунду. Запросы, превышающие установленное ограничение для определенной конечной точки, получают ошибку 429 HTTP в ответ.

Расход и пополнение

API-интерфейс Frame.io использует стратегию дырявого ведра для прогрессивного ограничения частоты запросов, при котором лимиты восстанавливаются постепенно в течение отведенного временного окна. Другими словами, не применяется полный сброс, после которого происходит восстановление лимитов для конкретного ресурса, что характерно для стратегий «фиксированного» и «скользящего окна». Вместо этого оставшиеся лимиты постоянно обновляются со скоростью, пропорциональной общему лимиту ресурса и его временному окну.

Экспоненциальная задержка

Наша рекомендуемая стратегия для управления ограничениями частоты запросов обычно называется «экспоненциальной задержкой».

Вкратце:

  • При получении ошибки 429 приостановите на определенный период (обычно на одну секунду).
  • Если снова возвращается ошибка 429, увеличивайте период ожидания экспоненциально до тех пор, пока не будет восстановлена нормальная работа.

Заголовки

Ответы на запросы API-интерфейса всегда будут включать следующие три заголовка, которые следует использовать для ограничения ваших исходящих запросов:

ЗаголовокЗначение
x-ratelimit-limitЛимит частоты запросов для данного пути к ресурсу, измеряемый в количестве запросов.
x-ratelimit-remainingКоличество запросов, оставшихся в текущем временном окне.
x-ratelimit-windowВременное окно для ограничений, действующих для данного пути к ресурсу, измеряемое в миллисекундах (мс).

Пример

Следующий пример взят из ответа на запрос GET v2/assets/:id/children для получения дочерних ресурсов корневой папки проекта, папки или стека версий. Ограничение для этого пути составляет 40 запросов за 60 000 мс (одну минуту), и остается 39 запросов после того, как один был сделан.

x-ratelimit-limit → 40
x-ratelimit-remaining → 39
x-ratelimit-window → 60000

Сведения

Ограничения частоты запросов сильно различаются для разных путей ресурсов в API-интерфейсе Frame.io. Ниже приведены некоторые избранные сведения для удобства чтения в формате «ресурс – действие» (например, «Ресурсы – Обновление» вместо PUT /assets/:id).

Как правило, пути к ресурсам, которые создают новые данные, ограничены частотой до 100 вызовов в минуту, а пути к ресурсам, которые получают списки ресурсов, ограничены 200 вызовами в минуту.

РесурсДействиеОграничение (запросы)Окно ограничения (мс)
Ресурсысоздание51000
Ресурсыобновление10
Ресурсычтение51000
Комментарии
Презентации
Проекты
Ссылки для рецензирования
Команды
Участники команды
создание10060 000
Поискчтение20060 000