Repolode
ZhuoZhuoCrayon

ZhuoZhuoCrayon/throttled-py

Библиотека для ограничения частоты запросов в Python с алгоритмами Fixed Window, Sliding Window, Token Bucket, Leaky Bucket и GCRA, хранилищем в Redis или памяти.

Звёзды
649
Форки
36
Открытые issues
10
Последний коммит
4 дня назад

Что это?

throttled-py — библиотека Python для ограничения частоты вызовов функций и API-запросов. Она поддерживает пять алгоритмов (Fixed Window, Sliding Window, Token Bucket, Leaky Bucket и GCRA), которые можно выбрать с помощью параметра `using`, а квоты задавать в удобном для чтения виде, например "100/s burst 200".

В библиотеке есть синхронный и асинхронный API, а вызывать функции можно напрямую, через декораторы или контекстные менеджеры. Счётчики хранятся в кэше LRU в памяти с истечением срока действия или в Redis в режимах standalone, Sentinel и Cluster. Вызовы могут сразу возвращать результат либо ждать и повторяться до истечения таймаута.

В библиотеку входят официальные интеграции с FastAPI и Flask: они добавляют ограничения через декораторы, заголовки ответа RateLimit-* и обработку HTTP 429. Также доступны хук для OpenTelemetry и интеграция с MCP Python SDK.

Ключевые возможности

  • 01Пять алгоритмов ограничения частоты запросов: Fixed Window, Sliding Window, Token Bucket, Leaky Bucket и GCRA.
  • 02Синхронный и асинхронный API с вызовами функций, декораторами и контекстными менеджерами.
  • 03Хранение в Redis в режимах standalone, Sentinel и Cluster, а также в памяти — с истечением срока действия и вытеснением по LRU.
  • 04Режим ожидания и повторных попыток с настраиваемым таймаутом.
  • 05Официальные интеграции с FastAPI и Flask с обработкой HTTP 429.

Сценарии использования

  • Ограничение исходящих вызовов стороннего API с квотами на запросы.
  • Ограничение числа запросов от пользователя или IP-адреса в сервисе на FastAPI или Flask.
  • Общий доступ к состоянию лимитов между несколькими экземплярами приложения через Redis.
  • Контроль всплесков запросов в асинхронных обработчиках на Python.

Быстрый старт

  1. 1

    Установите пакет из PyPI

    pip install throttled-py
  2. 2

    Создайте экземпляр Throttled и вызовите limit() в коде, как показано в примере Quick Start

Что важно знать

  • Для текущей ветки v3.x требуется Python 3.10 или новее; для Python 3.8 и 3.9 нужна версия throttled-py<3.0.0.
  • Для бэкенда Redis необходима необязательная дополнительная зависимость redis и работающий сервер Redis.

Темы

Частые вопросы

Что такое throttled-py?
Библиотека для ограничения частоты запросов в Python с алгоритмами Fixed Window, Sliding Window, Token Bucket, Leaky Bucket и GCRA, хранилищем в Redis или памяти. throttled-py — библиотека Python для ограничения частоты вызовов функций и API-запросов. Она поддерживает пять алгоритмов (Fixed Window, Sliding Window, Token Bucket, Leaky Bucket и GCRA), которые можно выбрать с помощью параметра `using`, а квоты задавать в удобном для чтения виде, например "100/s burst 200".
throttled-py можно использовать бесплатно? Какая у него лицензия?
throttled-py распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
throttled-py всё ещё поддерживается?
Активно поддерживается. Последний коммит в throttled-py — 18 окт. 2026 г..
Для чего можно использовать throttled-py?
Ограничение исходящих вызовов стороннего API с квотами на запросы. Ограничение числа запросов от пользователя или IP-адреса в сервисе на FastAPI или Flask. Общий доступ к состоянию лимитов между несколькими экземплярами приложения через Redis. Контроль всплесков запросов в асинхронных обработчиках на Python.
Как установить throttled-py?
Установите пакет из PyPI: pip install throttled-py Создайте экземпляр Throttled и вызовите limit() в коде, как показано в примере Quick Start
Где скачать throttled-py?
Исходный код и инструкции по установке — на GitHub: https://github.com/ZhuoZhuoCrayon/throttled-py

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Платформа автоматизации умного дома с открытым исходным кодом: работает локально и ставит во главу угла контроль и приватность, часто — на Raspberry Pi или локальном сервере.

91,6 тыс.39 тыс.PythonApache-2.0Обновлён вчера