Repolode
ZhuoZhuoCrayon

ZhuoZhuoCrayon/throttled-py

Biblioteca de Python para limitar la frecuencia con algoritmos Fixed Window, Sliding Window, Token Bucket, Leaky Bucket y GCRA, con almacenamiento en Redis o en memoria.

Estrellas
649
Forks
36
Issues abiertos
10
Último commit
hace 4 días

¿Qué es?

throttled-py es una biblioteca de Python para limitar la frecuencia de llamadas a funciones y solicitudes a API. Admite cinco algoritmos (Fixed Window, Sliding Window, Token Bucket, Leaky Bucket y GCRA), que se pueden seleccionar mediante el parámetro `using`; las cuotas se pueden expresar con cadenas legibles como "100/s burst 200".

La biblioteca ofrece API síncronas y asíncronas, y permite hacer llamadas directas a funciones, usar decoradores o administradores de contexto. Los contadores se guardan en un almacenamiento LRU en memoria con expiración, o en Redis en modo standalone, Sentinel o Cluster. Las llamadas pueden devolver el resultado de inmediato o esperar y reintentar hasta que se alcance un timeout.

Incluye integraciones oficiales para FastAPI y Flask que añaden límites mediante decoradores, encabezados de respuesta RateLimit-* y gestión de respuestas HTTP 429. También ofrece una opción de hook para OpenTelemetry y se integra con el SDK de MCP para Python.

Funciones clave

  • 01Cinco algoritmos para limitar la frecuencia: Fixed Window, Sliding Window, Token Bucket, Leaky Bucket y GCRA.
  • 02API síncronas y asíncronas con llamadas a funciones, decoradores y administradores de contexto.
  • 03Almacenamiento en Redis en modos standalone, Sentinel y Cluster, además de almacenamiento en memoria con expiración y expulsión LRU.
  • 04Modo de espera y reintento con timeout configurable.
  • 05Integraciones oficiales para FastAPI y Flask con gestión de respuestas HTTP 429.

Casos de uso

  • Limitar las llamadas salientes a una API de terceros que impone cuotas de solicitudes.
  • Limitar las solicitudes por usuario o IP en un servicio FastAPI o Flask.
  • Compartir el estado de los límites de frecuencia entre varias instancias de una aplicación mediante Redis.
  • Controlar los picos de solicitudes en workers asíncronos de Python.

Inicio rápido

  1. 1

    Instala el paquete desde PyPI

    pip install throttled-py
  2. 2

    Crea una instancia de Throttled y llama a limit() en tu código, como se muestra en el ejemplo de Quick Start

Antes de usarlo

  • La línea v3.x actual requiere Python 3.10 o posterior; para Python 3.8 y 3.9, necesitas throttled-py<3.0.0.
  • El backend de Redis requiere el extra opcional redis y un servidor Redis en ejecución.

Temas

Preguntas frecuentes

¿Qué es throttled-py?
Biblioteca de Python para limitar la frecuencia con algoritmos Fixed Window, Sliding Window, Token Bucket, Leaky Bucket y GCRA, con almacenamiento en Redis o en memoria. throttled-py es una biblioteca de Python para limitar la frecuencia de llamadas a funciones y solicitudes a API. Admite cinco algoritmos (Fixed Window, Sliding Window, Token Bucket, Leaky Bucket y GCRA), que se pueden seleccionar mediante el parámetro `using`; las cuotas se pueden expresar con cadenas legibles como "100/s burst 200".
¿throttled-py es gratuito? ¿Qué licencia tiene?
throttled-py es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿throttled-py sigue mantenido?
Mantenimiento activo. El último commit de throttled-py fue el 18 oct 2026.
¿Para qué puedo usar throttled-py?
Limitar las llamadas salientes a una API de terceros que impone cuotas de solicitudes. Limitar las solicitudes por usuario o IP en un servicio FastAPI o Flask. Compartir el estado de los límites de frecuencia entre varias instancias de una aplicación mediante Redis. Controlar los picos de solicitudes en workers asíncronos de Python.
¿Cómo se instala throttled-py?
Instala el paquete desde PyPI: pip install throttled-py Crea una instancia de Throttled y llama a limit() en tu código, como se muestra en el ejemplo de Quick Start
¿Dónde consigo throttled-py?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/ZhuoZhuoCrayon/throttled-py

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados