taolib.testing.rate_limiter.models

目录

taolib.testing.rate_limiter.models#

Pydantic models for rate limiter configuration, responses, and documents.

Classes#

PathRule

路径级限流规则。

WhitelistConfig

白名单配置。

RateLimitConfig

限流配置。

RateLimitResult

限流检查结果。

RateLimitErrorResponse

429 响应体。

TopUserEntry

Top Users 统计条目。

ViolationStatsEntry

违规统计条目。

RealtimeStats

实时请求统计。

ViolationDocument

MongoDB 限流违规文档模型。

Module Contents#

class taolib.testing.rate_limiter.models.PathRule#

Bases: pydantic.BaseModel

路径级限流规则。

limit: int#
window_seconds: int | None#
description: str#
methods: list[str] | None#
class taolib.testing.rate_limiter.models.WhitelistConfig#

Bases: pydantic.BaseModel

白名单配置。

ips: list[str]#
user_ids: list[str]#
bypass_paths: list[str]#
class taolib.testing.rate_limiter.models.RateLimitConfig#

Bases: pydantic.BaseModel

限流配置。

enabled: bool#
default_limit: int#
window_seconds: int#
path_rules: dict[str, PathRule]#
whitelist: WhitelistConfig#
redis_url: str#
mongo_violation_ttl_days: int#
mongo_collection: str#
classmethod from_toml(config_path: str) RateLimitConfig#

从 TOML 文件加载配置。

参数:

config_path -- TOML 配置文件路径

返回:

限流配置实例

class taolib.testing.rate_limiter.models.RateLimitResult#

Bases: pydantic.BaseModel

限流检查结果。

allowed: bool#
limit: int#
remaining: int#
reset_timestamp: float#
retry_after: int | None#
class taolib.testing.rate_limiter.models.RateLimitErrorResponse#

Bases: pydantic.BaseModel

429 响应体。

error: str#
message: str#
retry_after: int#
limit: int#
window_seconds: int#
class taolib.testing.rate_limiter.models.TopUserEntry#

Bases: pydantic.BaseModel

Top Users 统计条目。

identifier: str#
request_count: int#
identifier_type: str#
class taolib.testing.rate_limiter.models.ViolationStatsEntry#

Bases: pydantic.BaseModel

违规统计条目。

identifier: str#
count: int#
identifier_type: str#
last_violation: datetime.datetime | None = None#
class taolib.testing.rate_limiter.models.RealtimeStats#

Bases: pydantic.BaseModel

实时请求统计。

active_requests: int#
requests_per_second: float#
top_paths: list[dict[str, Any]]#
class taolib.testing.rate_limiter.models.ViolationDocument#

Bases: pydantic.BaseModel

MongoDB 限流违规文档模型。

id: str#
identifier: str#
identifier_type: Literal['user', 'ip']#
user_id: str | None#
ip_address: str#
path: str#
method: str#
request_count: int#
limit: int#
window_seconds: int#
retry_after: int#
user_agent: str | None#
timestamp: datetime.datetime#
model_config#
to_mongo_dict() dict[str, Any]#

转换为 MongoDB 插入字典。