ДокументацияTypeSafe Python SDKПолитика повторов (Retries)

Политика повторов (Retries)

Configure retries with RetryPolicy — attempt count, retryable statuses, backoff, and retry headers handling.

Настройка повторных попыток с помощью RetryPolicy — количество попыток, повторяемые статусы, задержка и обработка заголовков повтора.

export function SdkSignature({children}) {
async function copy(event) {
const button = event.currentTarget;
const code = button.parentElement.querySelector("pre code");
try {
await navigator.clipboard.writeText(code.textContent);
button.setAttribute("aria-label", "Signature copied");
button.dataset.copied = "true";
} catch {
button.setAttribute("aria-label", "Copy failed; select the signature to copy");
}
setTimeout(() => {
button.setAttribute("aria-label", "Copy signature");
delete button.dataset.copied;
}, 2000);
}
return



{children}

;
}

typesafe\_sdk.RetryPolicy

dataclass

{"RetryPolicy"}{"("}{"\n"}{" "}{"max_retries"}{":"}{" "}
{"int"}{" "}{"="}{" "}{"2"}{","}{"\n"}{" "}{"backoff_initial"}{":"}{" "}{"float"}{" "}{"="}{" "}{"0.5"}{","}{"\n"}{" "}{"backoff_max"}{":"}{" "}{"float"}{" "}{"="}{" "}{"5.0"}{","}{"\n"}{" "}{"backoff_jitter"}{":"}{" "}{"float"}{" "}{"="}{" "}{"0.25"}{","}{"\n"}{" "}{"http_statuses"}{":"}{" "}{"set"}{"["}{"int"}{"]"}{" "}{"="}{" "}{"("}{"\n"}{" "}{"lambda"}{":"}{" "}{"{"}{"408"}{","}{" "}{"429"}{","}{" "}{"*"}{"range"}{"("}{"500"}{","}{" "}{"600"}{")}"}{"\n"}{" "}{")(),"}{"\n"}{" "}{"respect_retry_after"}{":"}{" "}{"bool"}{" "}{"="}{" "}{"True"}{","}{"\n"}{" "}{"api_connection_error"}{":"}{" "}{"bool"}{" "}{"="}{" "}{"True"}{","}{"\n"}{" "}{"api_timeout_error"}{":"}{" "}{"bool"}{" "}{"="}{" "}{"True"}{","}{"\n"}{" "}{"exceptions"}{":"}{" "}{"set"}{"["}{"\n"}{" "}{"type"}{"["}{"BaseException"}{"]"}{"\n"}{" "}{"]"}{" "}{"="}{" "}{"set"}{"(),"}{"\n"}{" "}{"predicate"}{":"}{" "}{"Callable"}{"[["}{"BaseException"}{"],"}{" "}{"bool"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"timeout"}{":"}{" "}{"float"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"30.0"}{","}{"\n"}{")"}{"\n"}

Конфигурация поведения повторных попыток (retries) в SDK.

Примеры:

PYTHON THEME={NULL} api.wedstack.ru/v1
from typesafe_sdk import RetryPolicy, TypeSafeClient

client = TypeSafeClient(
    retry=RetryPolicy(
        max_retries=3, timeout=10.0, http_statuses={429, 500, 502, 503, 504}
    )
)

max\_retries

class-attribute instance-attribute

{"max_retries"} {":"}

{" "}

{"int"}

{" "}

{"="}

{" "}

{"2"}

{"\n"}

Максимальное количество повторных попыток после начального запроса; 0 отключает повторные попытки.

backoff\_initial

class-attribute instance-attribute

{"backoff_initial"} {":"}

{" "}

{"float"}

{" "}

{"="}

{" "}

{"0.5"}

{"\n"}

Начальная задержка в секундах, удваиваемая с каждой попыткой вплоть до backoff_max; ноль отключает увеличение задержки (backoff).

backoff\_max

class-attribute instance-attribute

{"backoff_max"} {":"}

{" "}

{"float"}

{" "}

{"="}

{" "}

{"5.0"}

{"\n"}

Максимальная задержка между попытками в секундах; ноль отключает увеличение задержки.

backoff\_jitter

class-attribute instance-attribute

{"backoff_jitter"} {":"}

{" "}

{"float"}

{" "}

{"="}

{" "}

{"0.25"}

{"\n"}

Случайная доля (джиттер) от 0 до 1, вычитаемая из каждой задержки для предотвращения одновременных запросов.

http\_statuses

class-attribute instance-attribute

{"http_statuses"}{":"}{" "}{"set"}{"["}{"int"}{"]"}{" "}{"="}{" "}{"field"}{"("}{"\n"}{" "}{"default_factory"}{"="}{"lambda"}{":"}{" "}{"{"}{"\n"}{" "}{"408"}{","}{"\n"}{" "}{"429"}{","}{"\n"}{" "}{"*"}{"range"}{"("}{"500"}{","}{" "}{"600"}{"),"}{"\n"}{" "}{"}"}{"\n"}{")"}{"\n"}

Коды состояния HTTP, для которых выполняются повторные попытки.

respect\_retry\_after

class-attribute instance-attribute

{"respect_retry_after"} {":"}

{" "}

{"bool"}

{" "}

{"="}

{" "}

{"True"}

{"\n"}

Учитывать ли заголовки ответа Retry-After и retry-after-ms.

api\_connection\_error

class-attribute instance-attribute

{"api_connection_error"} {":"}

{" "}

{"bool"}

{" "}

{"="}

{" "}

{"True"}

{"\n"}

Повторять ли запрос при ошибке TypeSafeAPIConnectionError, возникающей, если не удается подключиться к серверу или прочитать ответ.

api\_timeout\_error

class-attribute instance-attribute

{"api_timeout_error"} {":"}

{" "}

{"bool"}

{" "}

{"="}

{" "}

{"True"}

{"\n"}

Повторять ли запрос при ошибке TypeSafeAPITimeoutError, возникающей при превышении таймаута запроса.

exceptions

class-attribute instance-attribute

{"exceptions"}{":"}{" "}{"set"}{"["}{"type"}{"["}{"BaseException"}{"]]"}{" "}{"="}{" "}{"field"}{"("}{"\n"}{" "}{"default_factory"}{"="}{"set"}{"\n"}{")"}{"\n"}

Дополнительные типы исключений, инициирующие повторную попытку, сверх встроенных правил.

predicate

class-attribute instance-attribute

{"predicate"}{":"}{" "}{"("}{"\n"}{" "}{"Callable"}{"[["}{"BaseException"}{"],"}{" "}{"bool"}{"]"}{" "}{"|"}{" "}{"None"}{"\n"}{")"}{" "}{"="}{" "}{"None"}{"\n"}

Необязательная функция-предикат, вызываемая с возникшим исключением; возврат True инициирует повторную попытку в дополнение к остальным правилам.

timeout

class-attribute instance-attribute

{"timeout"} {":"}

{" "}

{"float"}

{" "}

{"|"}

{" "}

{"None"}

{" "}

{"="}

{" "}

{"30.0"}

{"\n"}

Общий лимит времени (бюджет) на повторные попытки в секундах на один вызов SDK, включая начальную попытку и все задержки; None отключает ограничение.

Повторные попытки прекращаются перед попыткой, задержка которой превысит или исчерпает бюджет, после чего повторно выбрасывается последняя ошибка.