taolib.testing.rate_limiter#
Rate Limiter Module
滑动窗口限流中间件,基于 Redis 实现,为 FastAPI 应用提供: - 按用户/IP 差异化限流 - 接口级限流配置 - 白名单机制 - 违规监控与统计
- Usage:
from taolib.testing.rate_limiter import RateLimiter, RateLimitMiddleware
Submodules#
- taolib.testing.rate_limiter.api
- taolib.testing.rate_limiter.config
- taolib.testing.rate_limiter.dependencies
- taolib.testing.rate_limiter.errors
- taolib.testing.rate_limiter.example_integration
- taolib.testing.rate_limiter.keys
- taolib.testing.rate_limiter.limiter
- taolib.testing.rate_limiter.middleware
- taolib.testing.rate_limiter.models
- taolib.testing.rate_limiter.stats
- taolib.testing.rate_limiter.store
- taolib.testing.rate_limiter.violation_tracker
Exceptions#
限流阈值超出异常。 |
Classes#
限流配置。 |
|
限流引擎核心类。 |
|
FastAPI 限流中间件。 |
Package Contents#
- class taolib.testing.rate_limiter.RateLimitConfig#
Bases:
pydantic.BaseModel限流配置。
- whitelist: WhitelistConfig#
- classmethod from_toml(config_path: str) RateLimitConfig#
从 TOML 文件加载配置。
- 参数:
config_path -- TOML 配置文件路径
- 返回:
限流配置实例
- exception taolib.testing.rate_limiter.RateLimitExceededError(*, limit: int, window_seconds: int, retry_after: int, identifier: str)#
Bases:
Exception限流阈值超出异常。
当请求频率超过配置的限流阈值时抛出。
- limit#
限流阈值
- window_seconds#
滑动窗口大小(秒)
- retry_after#
建议重试等待时间(秒)
- identifier#
被限流的标识符(用户ID或IP)
- reset_timestamp#
窗口重置时间戳
- limit#
- window_seconds#
- retry_after#
- identifier#
- reset_timestamp#
- class taolib.testing.rate_limiter.RateLimiter(config: taolib.testing.rate_limiter.config.RateLimitConfig, store: taolib.testing.rate_limiter.store.RateLimitStoreProtocol)#
限流引擎核心类。
负责: - 白名单检查 - 路径规则匹配 - 滑动窗口计数 - 限流决策
- 参数:
config -- 限流配置
store -- 存储后端(Redis 或内存)
- _config#
- _store#
- _get_rule_for_path(path: str, method: str) tuple[int, int]#
获取路径对应的限流规则。
- 参数:
path -- 请求路径
method -- HTTP 方法
- 返回:
(limit, window_seconds) 元组
- async check_limit(identifier: str, path: str, method: str = 'GET') taolib.testing.rate_limiter.models.RateLimitResult#
检查请求是否超出限流阈值。
- 参数:
identifier -- 用户标识符(如 "user:abc123" 或 "ip:192.168.1.1")
path -- 请求路径
method -- HTTP 方法
- 返回:
限流检查结果
- 抛出:
RateLimitExceededError -- 超出限流阈值时
- class taolib.testing.rate_limiter.RateLimitMiddleware(app: Any, limiter: taolib.testing.rate_limiter.limiter.RateLimiter, violation_tracker: taolib.testing.rate_limiter.violation_tracker.ViolationTracker | None = None, logger: logging.Logger | None = None)#
Bases:
starlette.middleware.base.BaseHTTPMiddlewareFastAPI 限流中间件。
功能: - 提取用户标识符(用户 ID 或 IP) - 检查白名单和 bypass 路径 - 调用限流引擎检查请求 - 注入限流响应头 - 记录违规行为
- 参数:
app -- ASGI 应用
limiter -- 限流引擎实例
violation_tracker -- 违规追踪器实例(可选)
logger -- 日志记录器
- _limiter#
- _violation_tracker = None#
- _logger#
- async dispatch(request: fastapi.Request, call_next: Any) fastapi.Response#
处理请求。
- 参数:
request -- 接收的请求
call_next -- 下一个处理函数
- 返回:
响应对象