wemake-services/asyncio-redis-rate-limit · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
asyncio-redis-rate-limit
使用 Redis 作为后端的异步函数速率限制器。
特性
- 小巧且简单
- 可作为装饰器或上下文管理器使用
- 可用于客户端和服务器
- 支持
asyncio - 支持任意数量的进程
- 同时支持
redis.asyncio.client.Redis和aioredis - 无竞态条件(希望如此!)
- 自
7.0起支持redis - 完全使用类型注解,并通过 mypy 检查,兼容 PEP561
安装
pip install asyncio-redis-rate-limit
可用附加项:
pip install asyncio-redis-rate-limit[redis]pip install asyncio-redis-rate-limit[aioredis](适用于 Python 版本<3.11)
示例
作为装饰器:
>>> from asyncio_redis_rate_limit import rate_limit, RateSpec
>>> from redis.asyncio import Redis as AsyncRedis # pip install redis
>>> redis = AsyncRedis.from_url('redis://localhost:6379')
>>> @rate_limit(
... rate_spec=RateSpec(requests=1200, seconds=60),
... backend=redis,
... )
... async def request() -> ...:
... ... # Do something useful! Call this function as usual.
或作为上下文管理器:
>>> from asyncio_redis_rate_limit import RateLimiter, RateSpec
>>> from redis.asyncio import Redis as AsyncRedis # pip install redis
>>> redis = AsyncRedis.from_url('redis://localhost:6379')
>>> async def request() -> ...:
... async with RateLimiter(
... unique_key='api-name.com',
... backend=redis,
... rate_spec=RateSpec(requests=5, seconds=1),
... ):
... ... # Do the request itself.
许可证
致谢
本项目使用 wemake-python-package 生成。当前模板版本为:1d63652fbb33ebe2f6d932f511b7f529a4ce2d2a。查看自那以来的更新。