Python-фреймворк для создания API со стандартными аннотациями типов, автоматической валидацией, документацией OpenAPI и высокой производительностью.
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
Установите пакет из PyPI
pip install throttled-py - 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 обновляется ежедневно.
Похожие проекты
In-memory хранилище данных, совместимое по API с Redis и Memcached и задуманное как их прямая замена.
Рекомендации и соглашения по созданию готовых к продакшену приложений на FastAPI на основе опыта работы в стартапах.
Лёгкий ASGI-фреймворк и набор инструментов для создания асинхронных веб-сервисов и API на Python.
Распределённая очередь задач для Python: выполняет фоновые задания и распределяет работу между воркерами через брокеры сообщений.
Платформа автоматизации умного дома с открытым исходным кодом: работает локально и ставит во главу угла контроль и приватность, часто — на Raspberry Pi или локальном сервере.