Коротко

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

Сервер не может принимать бесконечно много запросов сразу. Поэтому есть лимиты. Здесь мы объясним, что это, как обработать ошибку в коде и как снизить нагрузку. Если вы только начинаете, посмотрите сначала основы запроса к API.

Что такое лимит запросов

Лимит это максимальное число запросов за период, например за минуту. Так сервер защищает себя от перегрузки и делит ресурсы между всеми пользователями.

Точные значения зависят от вашего плана и модели. Их нужно смотреть в официальной документации, потому что они меняются и в примерах из сети могут быть устаревшими.

Зачем серверу лимиты

Без лимитов один пользователь мог бы занять весь сервер. Лимиты делят ресурс честно, чтобы сервис оставался быстрым для всех.

Как понять, что лимит превышен

Когда запросов слишком много, сервер вернёт особую ошибку. Обычно это код, который говорит, что нужно подождать. Текст ошибки чаще всего понятный и прямо называет причину.

Это не поломка кода, а сигнал сбавить темп. Правильная реакция это пауза и повтор, а не бесконечные попытки подряд.

  • Сервер отвечает ошибкой о превышении лимита.
  • В ответе часто есть подсказка, сколько ждать.
  • Запрос можно повторить позже.

Повторные попытки

Хороший приём это повтор с растущей паузой. Сначала ждёте секунду, потом две, потом четыре. Это называют экспоненциальной задержкой.

Так вы не заваливаете сервер и даёте лимиту восстановиться. Объём запросов проще планировать, если понимать, сколько токенов уходит на текст.

  • Поймайте ошибку лимита в коде.
  • Сделайте паузу перед повтором.
  • Увеличивайте паузу с каждой попыткой.
  • Ограничьте число повторов.

Почему пауза должна расти

Если повторять сразу, вы только усиливаете нагрузку. Растущая пауза даёт серверу время прийти в норму. Это мягкий способ, который не злит сервер новыми отказами.

Совет. Всегда ставьте верхний предел на число повторов. Без него цикл может крутиться очень долго и впустую.

Пример повтора на Python

Идею растущей паузы легко показать как обычный текст. Здесь нет настоящих ключей, только логика:

import time

pause = 1

for attempt in range(4):

try: ответ = вызов_модели(текст); break

except RateLimitError: time.sleep(pause); pause = pause * 2

Тут pause растёт после каждой неудачи, а число попыток ограничено четырьмя. Имя исключения сверьте с документацией, оно зависит от версии библиотеки.

  1. Задайте начальную паузу, например одну секунду.
  2. Повторяйте запрос в цикле с ограничением.
  3. Удваивайте паузу после каждой неудачи.
  4. Выходите из цикла при первом успехе.

Как снизить нагрузку

Меньше лишних запросов это меньше ошибок. Объединяйте задачи, кэшируйте ответы и не шлите одно и то же дважды. Иногда один продуманный запрос заменяет несколько мелких и при этом даёт более полный ответ.

Это также помогает экономить. Подробнее про деньги в материале про оценку стоимости запросов, а общий обзор в разделе про API.

Кэш как простой способ

Если запрос повторяется, сохраните прошлый ответ и отдавайте его из памяти. Так вы не тратите лимит и деньги на одно и то же.

Распространенные промахи

Частая ошибка это повтор запроса сразу же, без паузы. Так вы только усиливаете нагрузку, и сервер снова отвечает отказом.

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

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

Реакция на ошибку лимита

СитуацияЧто делать
Первый отказ Подождать и повторить
Повторный отказ Увеличить паузу
Много отказов подряд Снизить число запросов
Стабильная нехватка Проверить план в docs

Рост паузы между повторами (простая иллюстрация)

Это простая иллюстрация идеи растущей паузы, а не точные секунды.

Обработка лимита шаг за шагом

Простой процесс ответа на ошибку лимита.

Чеклист

  • Проверить лимиты своего плана в docs.
  • Ловить ошибку превышения лимита.
  • Делать паузу перед повтором.
  • Увеличивать паузу с каждой попыткой.
  • Ограничить максимальное число повторов.
  • Кэшировать повторяющиеся ответы.
  • Объединять мелкие запросы в один.

Частые ошибки

  • Повторять запрос сразу без паузы.
  • Слать одно и то же много раз.
  • Игнорировать подсказку, сколько ждать.
  • Делать бесконечные повторы без лимита.
  • Не проверять лимиты своего плана.

Частые вопросы

Сервер защищает себя от перегрузки и делит ресурсы между пользователями. Поэтому число запросов за период ограничено.

Сделайте паузу и повторите запрос. С каждой попыткой увеличивайте паузу, чтобы дать лимиту восстановиться.

В официальной документации OpenAI. Значения зависят от плана и модели и со временем меняются.

Это приём, когда пауза удваивается после каждой неудачи. Сначала одна секунда, потом две, потом четыре, и так далее.

Полностью нет, но можно реже их ловить. Кэшируйте ответы, объединяйте задачи и не шлите лишние запросы.

Лучше ограничить, например тремя или четырьмя. Бесконечные повторы могут крутиться очень долго и не помогут.

Источники

Мы опираемся на официальную документацию. Цены и состав моделей могут меняться, проверяйте важные факты по первоисточникам.