Как обрабатывать ошибку 429 в AI API: параллелизм, Retry-After и повторные запросы
Практическое руководство по ошибке 429 в AI API: Retry-After, экспоненциальная задержка, очередь параллельных запросов и защита от повторного списания.
Как обрабатывать ошибку 429 в AI API: параллелизм, Retry-After и повторные запросы
HTTP 429 обычно означает, что превышены частота запросов, число одновременных запросов или квота аккаунта. Это не обязательно сбой провайдера. Сначала определите тип ограничения, затем дождитесь разрешённого времени и только после этого повторите запрос.
Сначала изучите ответ
Записывайте статус, код ошибки, Retry-After, идентификатор запроса и модель, но не сохраняйте полный API Key и пользовательский prompt. Проверьте в кабинете баланс, RPM, TPM и лимит параллельных запросов. Если закончилась квота или аккаунт приостановлен, повторение не поможет.
Retry-After и экспоненциальная задержка
Если сервер прислал заголовок Retry-After, используйте его в первую очередь. Если заголовка нет, применяйте задержку 1, 2, 4 и 8 секунд с небольшим случайным отклонением. Для одного запроса достаточно 2–3 попыток и общего ограничения времени.
const delay = Math.min(8000, 1000 * 2 ** attempt)
await new Promise(resolve => setTimeout(resolve, delay + Math.random() * delay * 0.2))
После начала потокового ответа нельзя бездумно отправлять весь запрос заново: пользователь может получить повторный текст, а баланс может списаться дважды. Сохраните уже полученные данные и предложите продолжить или повторить операцию явно.
Ограничьте параллелизм очередью
Начните с небольшого числа одновременных запросов, например 5–10, и увеличивайте его только после наблюдения за реальными лимитами. Долгие запросы помещайте в очередь и устанавливайте максимальное время ожидания. Для разных моделей и провайдеров держите отдельные лимитирующие счётчики: их RPM и TPM могут отличаться.
Проверочный список
- Проверить баланс, RPM, TPM и лимит параллельности;
- Убедиться, что интерфейс не отправляет запрос дважды;
- Повторять только временные 429, а ошибки квоты останавливать;
- Соблюдать
Retry-Afterили использовать backoff с jitter; - Сохранять request ID и итоговый статус без секретов;
- Для потокового ответа не повторять весь запрос автоматически.
Правильная обработка 429 снижает нагрузку и делает задержки предсказуемыми. Ограничения и тарификация у каждого API-посредника свои, поэтому окончательно ориентируйтесь на его текущую документацию и данные кабинета.
Дополнительно: отладка потокового ответа AI API · проверка AI API перед запуском