Обработка 429 без шторма повторов

Руководство для production: Обработка 429 без шторма повторов. Включает детерминированный артефакт, границы отказа, контроль rollout и проверенные источники.

Обработка 429 без шторма повторов

Руководство для production: Обработка 429 без шторма повторов. Включает детерминированный артефакт, границы отказа, контроль rollout и проверенные источники.

Сначала решение

Обработка 429 без шторма повторов — явный production-контракт, а не отдельное изменение. До переноса трафика задайте успех, конечный отказ и rollback; артефакт отделяет доказательства от предположений.

Начните с classification, детерминированно докажите retry_after и сделайте terminal обязательным release-gate.

Повторно используемый артефакт

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

Контрольная точка Доказательство Условие прохождения
classification 429_source:_application,gateway,provider,or_shared_pool Запись связывает логический запрос и конкретную попытку.
retry_after delta-seconds_or_HTTP-date_parsed_against_a_monotonic_deadline Значение точно сохраняется и сравнивается на wire-границе.
jitter bounded_random_delay_after_server_guidance Предел явный, превышение закрывает операцию.
attempts one_end-to-end_attempt_budget_shared_by_every_layer Предел явный, превышение закрывает операцию.
concurrency admission_reduced_before_retry_volume_grows Предел явный, превышение закрывает операцию.
terminal final_429_returned_with_request_ID_and_no_hidden_retries Owner, источник, дата и ограничение записаны.

Разобранный пример

Пример синтетический и детерминированный. Подставьте проверенные параметры своей нагрузки; не используйте секреты или данные клиентов.

attempt_budget = 3
for attempt in 1..attempt_budget:
  result = call_once()
  if result.status != 429: return result
  if request.deadline_expired(): break
  delay = parse_retry_after(result.headers) ?? bounded_backoff(attempt)
  reduce_admission_concurrency()
  wait(min(delay + full_jitter(), request.remaining_time))
return terminal_429_without_another_retry()

Порядок внедрения

  1. Зафиксировать текущие запрос, ответ, конфигурацию и наблюдаемую базовую линию.
  2. Выполнить детерминированный положительный сценарий и сохранить полный результат.
  3. Выполнить парный отрицательный или предельный сценарий.
  4. Связать попытки одним логическим request ID и записать время, конечное состояние и usage без чувствительного содержимого.
  5. Раскатывать на ограниченную когорту с условиями остановки.
  6. Повторно прочитать долговечное состояние и публичное поведение; при нарушении инварианта выполнить rollback.

Режимы отказа

Эти ошибки обесценивают результат, даже если внешний HTTP выглядит успешным:

  • Повторы без бюджета усиливают нагрузку.
  • Отмена не доходит до очереди и upstream, продолжая расходовать емкость.
  • Один текстовый ответ принимается за полное доказательство совместимости.
  • Промпты, ключи или чувствительные аргументы попадают в телеметрию.

Граница Modelflare

Modelflare централизует OpenAI-совместимый routing, ключи, группы, usage и ошибки, но настроенный маршрут не доказывает опциональные возможности провайдера. Проверяйте модель и канал нативным протоколом, сохраняйте явные нули и считайте истиной billing только долговечный расчет.

Общая граница решения описана в родительском руководстве, текущая настройка — в документации.

Проверка перед публикацией

  • Сначала ответить на главный вопрос.
  • Назначить owner каждому полю, состоянию, метрике и формуле.
  • Использовать только синтетические идентификаторы.
  • Сохранить структуру, код, лимиты и предупреждения во всех языках.
  • На T-1 перепроверить контракты, поддержку и цены; при изменении перенести дату.
  • До срока исключить страницу из public API, маршрутов и sitemap.

Источники и дата проверки

Источники проверены 2026-08-07; они не доказывают непроверенный маршрут.