--- title: Ограничить частоту отправки description: Резервируйте каждую фактическую попытку перед transport send. sources: - eazy_sdk.ClientConfig - eazy_sdk.ratelimit_runtime api_fingerprint: "sha256:f1b8c86f47f0406a85262c308e317783c914ff78d9851c9e4f759b6338c9e226" --- Считать нужно отправки. Rate limiter вызывается перед каждой физической отправкой, а не один раз на логический метод. Поэтому retry, redirect и replay защитной проверки получают отдельную reservation. ```{literalinclude} ../../../../../../examples/docs/reliability_rate_limit.py :language: python :start-after: "# region docs: reliability-rate-limit" :end-before: "# endregion docs: reliability-rate-limit" ``` `context.authority` позволяет разделить buckets по сервисам. Также доступны операция, номер и вид попытки. Limiter возвращает задержку, но не отправляет HTTP-запрос самостоятельно. :::{dropdown} Файл целиком ```{literalinclude} ../../../../../../examples/docs/reliability_rate_limit.py :language: python ``` ::: ```text result: limited reservation: api.mail.example attempt=1 ``` Ожидание учитывает cancellation и общий timeout. Повтор после `429` создаёт новую reservation; получение и проверка обязательной protection тоже проходят limiter, когда реализованы обычными scoped API-операциями, и потому не образуют скрытый transport path. ## Дальше - {doc}`Настроить retry ` - {doc}`Обработать защитную проверку ` - {doc}`Добавить middleware `