Repolode
ZhuoZhuoCrayon

ZhuoZhuoCrayon/throttled-py

Python 限流库,支持固定窗口、滑动窗口、令牌桶、漏桶和 GCRA 算法,可用 Redis 或内存存储。

Star
649
Fork
36
未关闭 Issue
10
最近提交
4天前

这是什么?

throttled-py 是一个用于限制函数调用和 API 请求频率的 Python 库。它提供固定窗口、滑动窗口、令牌桶、漏桶和 GCRA 五种算法,通过 `using` 参数切换,配额可以写成 "100/s burst 200" 这样的可读字符串。

库同时支持同步和异步(async/await)调用,可以直接调用、使用装饰器或上下文管理器。计数数据可保存在带过期和 LRU 淘汰的内存存储中,也可保存在 Redis 中,支持单机、Sentinel 和 Cluster 模式。请求既可以立即返回结果,也可以设置超时时间,等待后自动重试。

项目提供 FastAPI 和 Flask 的官方集成,支持基于装饰器的限流、符合 IETF 规范的 RateLimit-* 响应头以及 HTTP 429 处理。另外还支持 OpenTelemetry 钩子,并可与 MCP Python SDK 集成。

核心功能

  • 01提供固定窗口、滑动窗口、令牌桶、漏桶和 GCRA 五种限流算法。
  • 02同时支持同步和异步调用,可用函数调用、装饰器或上下文管理器。
  • 03支持 Redis(单机、Sentinel、Cluster)和带过期与 LRU 淘汰的内存存储。
  • 04支持等待重试模式,可设置超时时间。
  • 05提供 FastAPI 和 Flask 官方集成,并处理 HTTP 429 响应。

适用场景

  • 对接有调用配额限制的第三方 API,控制出站请求频率。
  • 在 FastAPI 或 Flask 服务中按用户或 IP 限制请求次数。
  • 通过 Redis 在多个应用实例之间共享限流状态。
  • 控制异步 Python 任务中的请求突发。

标签

常见问题

throttled-py 是什么?
Python 限流库,支持固定窗口、滑动窗口、令牌桶、漏桶和 GCRA 算法,可用 Redis 或内存存储。 throttled-py 是一个用于限制函数调用和 API 请求频率的 Python 库。它提供固定窗口、滑动窗口、令牌桶、漏桶和 GCRA 五种算法,通过 `using` 参数切换,配额可以写成 "100/s burst 200" 这样的可读字符串。
throttled-py 可以免费使用吗?用的什么许可证?
throttled-py 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
throttled-py 还在维护吗?
活跃维护中。throttled-py 最近一次提交是在 2026年10月18日。
throttled-py 适合用来做什么?
对接有调用配额限制的第三方 API,控制出站请求频率。 在 FastAPI 或 Flask 服务中按用户或 IP 限制请求次数。 通过 Redis 在多个应用实例之间共享限流状态。 控制异步 Python 任务中的请求突发。
在哪里获取 throttled-py?
源代码和安装说明在 GitHub 上:https://github.com/ZhuoZhuoCrayon/throttled-py

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目