код 429 с текстом Too many requests возвращают несколько разных ограничений. текст ошибки у них одинаковый, поэтому причину проще определить по тому, что происходило перед ней.
пауза после серии ошибок
если по одному ключу за минуту приходит 20 ответов с ошибкой 4xx, ключ переводится в паузу, и все запросы по нему получают 429. первая пауза — минута, при повторении — 10 минут, затем час, затем 12 часов. отсчёт повторов обнуляется через 12 часов без новых срабатываний.
смысл ограничения в том, что поток ошибок почти всегда означает неверную интеграцию, а не временный сбой: повторять такие запросы бессмысленно.
считаются все ошибки 4xx, а не только отказы по лимитам. два типичных сценария:
- в теле запроса опечатка, и сервис отвечает 400. приложение в цикле отправляет его снова — на двадцатом ответе ключ уходит в паузу.
- на балансе не хватает средств, каждый запрос возвращает 402. двадцать таких ответов за минуту дают тот же результат: до конца паузы вместо 402 будет приходить 429, даже если баланс уже пополнен.
прежде чем повторять запрос, стоит разобраться с причиной ошибки. циклические повторы неудачного запроса приводят к паузе по ключу.
лимиты моделей
пропускную способность на стороне конечного сервиса задают два предела: на количество запросов в минуту и на количество токенов в минуту. точные значения у каждой модели свои, где-то выше, где-то ниже, но порядок один и тот же — десятки тысяч запросов и миллионы токенов. запросы airakurs идут через пул на максимальных тарифных уровнях, поэтому на обычной нагрузке упереться в эти пределы практически невозможно.
если 429 всё же пришла от конечного сервиса, причина обычно не в исчерпанном лимите, а в перегрузке или сбое на его стороне. такие ошибки временные: запрос сначала пробуется у другого провайдера этой модели, и приложению возвращается только если не ответил ни один.
если нагрузка требует гарантированно большей пропускной способности, напишите в поддержку — расширить канал можно для любой модели.
как повторять запрос
при 429 запрос стоит повторить с увеличивающейся задержкой: одна секунда, две, четыре и так далее. повторы без задержки только продлевают ограничение.
ошибки 4xx, кроме 429, повторять не нужно вообще: их причина в самом запросе, и серия повторов приведёт к паузе по ключу.
что дальше
частые вопросы
почему запрос возвращает 429, хотя запросов немного?
скорее всего сработала пауза после серии ошибок: 20 ответов с ошибкой 4xx за минуту по одному ключу переводят ключ в паузу. проверьте, не повторяется ли в коде запрос, который возвращает ошибку.
как долго длится пауза по ключу?
первая — минуту. при повторении — 10 минут, затем час, затем 12 часов. если срабатываний нет 12 часов, отсчёт начинается заново.
есть ли ограничение на количество запросов и токенов в минуту?
пределов два, и задаёт их конечный сервис: на запросы в минуту и на токены в минуту. у каждой модели значения свои, но порядок везде одинаковый — десятки тысяч запросов и миллионы токенов. запросы распределяются по пулу на максимальных тарифных уровнях, так что на обычной нагрузке эти пределы недостижимы. если нужна гарантированно большая пропускная способность — напишите в поддержку.
что делать при ошибке 429?
повторить запрос с увеличивающейся задержкой — одна секунда, две, четыре. остальные ошибки 4xx повторять не нужно: их причина в самом запросе.