Перейти к содержимому

Обработка ограничений частоты и ошибок сервера

Выдерживайте паузу после ответа 429 и осторожно повторяйте безопасные операции после временного сбоя сервера.

Обновлено

Обработайте ответ 429

Запрос, достигший ограничения частоты, получает 429 Too Many Requests, а значение detail.status равно rate_limit_exceeded. Перед повторной попыткой прочитайте заголовки ответа:

  • Retry-After задаёт минимальное время ожидания в секундах после отклонения запроса.
  • X-RateLimit-Limit сообщает лимит группы запросов.
  • X-RateLimit-Remaining сообщает число оставшихся запросов.
  • X-RateLimit-Reset сообщает время сброса лимита группы.

Подождите время из Retry-After, затем повторяйте запрос с экспоненциальной задержкой и небольшим случайным отклонением. Уменьшите число параллельных запросов и поставьте работу в очередь вместо резкой отправки пакета сразу после сброса окна.

Обработайте ошибки сервера

При ответе 500 публичное тело содержит общую ошибку и request_id, но не внутренние детали исключения. Ответ 503 может означать временную недоступность необходимого сервиса.

Повторяйте запросы только на чтение с ограниченной задержкой. Прежде чем повторять создание, изменение, оплату или другой запрос, меняющий состояние, выясните, завершилась ли первая попытка. Истечение времени или ответ 5xx не доказывает, что изменение не произошло; немедленный повтор может продублировать работу.

Сохраните диагностические данные

Запишите время, метод, путь, статус, тело ответа и X-Request-Id. Никогда не записывайте значение x-api-key в журнал. Остановите автоматические повторы после небольшого ограниченного числа попыток и передайте ошибку на рассмотрение.