Перейти к содержимому

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

По умолчанию методы с повторными попытками повторяют любое исключение до 3 раз с откатом 2 ** attempt — это значит, что быстро падающий 401 (неверный API-ключ) тратит более 7 секунд, прежде чем всплыть. RetryPolicy исправляет это: повторяет только временные ошибки с ограниченным откатом и джиттером.

from mmar_carl import OpenAICompatibleClient, OpenAIClientConfig, RetryPolicy
client = OpenAICompatibleClient(OpenAIClientConfig(
base_url="https://openrouter.ai/api/v1",
api_key="sk-or-v1-...",
model="qwen/qwen3-coder",
retry_policy=RetryPolicy(
max_attempts=5,
backoff="exponential",
initial_delay_s=0.5,
max_delay_s=10.0,
),
))
ПолеТипПо умолчаниюНазначение
max_attemptsint3Всего попыток (начальная + повторные); 1–20.
retry_on_statuslist[int][429, 500, 502, 503, 504]HTTP-статусы, требующие повторной попытки.
backoff"constant" | "exponential""exponential"Рост задержки между попытками.
initial_delay_sfloat1.0Задержка перед первой повторной попыткой.
max_delay_sfloat30.0Ограничение на любую отдельную задержку.
jitterboolTrueУмножить каждую задержку на 0.5 + random()*0.5, чтобы избежать эффекта «стада».

Политика подключается через OpenAIClientConfig.retry_policy и управляет методами с поддержкой повторных попыток (get_response_with_retries, get_response_with_usage, …).