Repolode
ZhuoZhuoCrayon

ZhuoZhuoCrayon/throttled-py

Biblioteca Python de rate limiting com algoritmos Fixed Window, Sliding Window, Token Bucket, Leaky Bucket e GCRA, usando armazenamento em Redis ou em memória.

Estrelas
649
Forks
36
Issues abertas
10
Último commit
há 4 dias

O que é?

throttled-py é uma biblioteca Python para limitar chamadas de funções e requisições de API. Ela oferece cinco algoritmos (Fixed Window, Sliding Window, Token Bucket, Leaky Bucket e GCRA), selecionados pelo parâmetro `using`, e permite definir cotas com strings legíveis, como "100/s burst 200".

A biblioteca oferece APIs síncronas e assíncronas, e pode ser usada com chamadas de função simples, decorators ou context managers. Os contadores ficam em um armazenamento LRU em memória com expiração ou no Redis, nos modos standalone, Sentinel ou Cluster. As chamadas podem retornar imediatamente ou aguardar e tentar novamente até atingir um timeout.

A biblioteca inclui integrações oficiais com FastAPI e Flask, que adicionam limites configurados por decorators, cabeçalhos de resposta RateLimit-* e tratamento de HTTP 429. Também oferece uma opção de hook para OpenTelemetry e integração com o MCP Python SDK.

Recursos principais

  • 01Cinco algoritmos de rate limiting: Fixed Window, Sliding Window, Token Bucket, Leaky Bucket e GCRA.
  • 02APIs síncronas e assíncronas, com uso por chamadas de função, decorators e context managers.
  • 03Armazenamento em Redis nos modos standalone, Sentinel e Cluster, além de armazenamento em memória com expiração e remoção LRU.
  • 04Modo de espera e nova tentativa com timeout configurável.
  • 05Integrações oficiais com FastAPI e Flask, com tratamento de HTTP 429.

Casos de uso

  • Limitar chamadas de saída para uma API de terceiros que impõe cotas de requisições.
  • Limitar requisições por usuário ou IP em um serviço FastAPI ou Flask.
  • Compartilhar o estado dos limites de requisições entre várias instâncias da aplicação usando Redis.
  • Controlar picos de requisições em workers Python assíncronos.

Início rápido

  1. 1

    Instale o pacote pelo PyPI

    pip install throttled-py
  2. 2

    Crie uma instância de Throttled e chame limit() no seu código, conforme mostrado no exemplo Quick Start

Antes de usar

  • A linha v3.x atual requer Python 3.10 ou mais recente; para Python 3.8 e 3.9, é necessário usar throttled-py<3.0.0.
  • O backend Redis requer o extra opcional redis e um servidor Redis em execução.

Tópicos

Perguntas frequentes

O que é throttled-py?
Biblioteca Python de rate limiting com algoritmos Fixed Window, Sliding Window, Token Bucket, Leaky Bucket e GCRA, usando armazenamento em Redis ou em memória. throttled-py é uma biblioteca Python para limitar chamadas de funções e requisições de API. Ela oferece cinco algoritmos (Fixed Window, Sliding Window, Token Bucket, Leaky Bucket e GCRA), selecionados pelo parâmetro `using`, e permite definir cotas com strings legíveis, como "100/s burst 200".
throttled-py é gratuito? Qual é a licença?
throttled-py é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
throttled-py ainda é mantido?
Manutenção ativa. O último commit de throttled-py foi em 18 de out. de 2026.
Para que posso usar throttled-py?
Limitar chamadas de saída para uma API de terceiros que impõe cotas de requisições. Limitar requisições por usuário ou IP em um serviço FastAPI ou Flask. Compartilhar o estado dos limites de requisições entre várias instâncias da aplicação usando Redis. Controlar picos de requisições em workers Python assíncronos.
Como instalar throttled-py?
Instale o pacote pelo PyPI: pip install throttled-py Crie uma instância de Throttled e chame limit() no seu código, conforme mostrado no exemplo Quick Start
Onde consigo throttled-py?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/ZhuoZhuoCrayon/throttled-py

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados