К содержимому
Claude Code с 0:полный курс
Уровень 3 · Деньги, скорость и production 4 мин

Ошибки и повторы: 429, 529 и таймауты

Разбираем коды ошибок API и решаем, что безопасно повторять с backoff, а что нужно чинить руками.

В этом уроке нет практического задания — просто прочитай и ответь на вопросы.

В продакшене запросы иногда падают — это нормально. Важно различать ошибки, которые надо чинить (повтор не поможет), и ошибки, которые надо переждать и повторить.

Карта кодов

  • 400 — плохой запрос: опечатка в параметре, неверный JSON, сообщения не чередуются user/assistant. Повтор бессмысленен — чини запрос.
  • 401 — проблема с ключом: не задан или неверный x-api-key. Чини конфиг (ключ живёт в переменной окружения, не в коде).
  • 429 — rate limit: слишком много запросов. Повторять можно — с задержкой (backoff). В ответе есть заголовок retry-after.
  • 500 / 529 — перегрузка на стороне Anthropic. Повторять с backoff.

Правило простое: 429 и 5xx — ретраить с нарастающей паузой; 400 и 401 — не ретраить, исправлять.

SDK уже умеет ретраить

Официальный SDK сам повторяет 429 и 5xx с экспоненциальным backoff. Лови типизированные исключения, а не текст ошибки:

import anthropic

try:
    resp = client.messages.create(
        model="claude-opus-4-8",
        max_tokens=1024,
        messages=[{"role": "user", "content": "..."}],
    )
except anthropic.BadRequestError:
    raise            # 400 — баг в запросе, чинить
except anthropic.RateLimitError:
    pass             # 429 — SDK уже ретраил; обработай очередь
except anthropic.APIError as e:
    log(e.status)    # прочее, в т.ч. 5xx

Про таймауты

Если просишь длинный ответ (большой max_tokens), обычный запрос может упасть по таймауту. Решение — стримить: client.messages.stream(...) + .get_final_message(). Поток держит соединение живым, пока модель пишет.

stop_reason == "max_tokens" — это не ошибка, а сигнал: ответ оборвался, потому что упёрся в лимит. Подними max_tokens и повтори.

Проверь себя

Отвечено 0/3
Режим:

Пришёл код 400. Что делать?

Какие коды безопасно повторять с backoff?

Запрос с большим max_tokens падает по таймауту. Что поможет?

Выполни задание в терминале и ответь на вопросы, чтобы завершить урок.

📝 Мои заметки

Сохраняется автоматически в этом браузере · видно на странице «Заметки».

Листай уроки клавишами · поиск по ⌘K