跳转到主要内容

使用Redis作为后端的异步函数速率限制器

项目描述

asyncio-redis-rate-limit

wemake.services Build Status codecov Python Version wemake-python-styleguide

使用Redis作为后端的异步函数速率限制器。

功能

  • 小巧简单
  • 可以作为装饰器或上下文管理器使用
  • 可用于客户端和服务器
  • asyncio兼容
  • 与任何数量的进程兼容
  • redis.asyncio.client.Redisaioredis兼容
  • 无竞争条件(希望如此!)
  • 支持从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.

许可证

MIT

致谢

本项目使用 wemake-python-package 生成。当前模板版本为: 1d63652fbb33ebe2f6d932f511b7f529a4ce2d2a。查看自那时以来的更新内容:更新

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

asyncio_redis_rate_limit-1.0.0.tar.gz (5.4 kB 查看哈希值)

上传时间 源代码

构建分发

asyncio_redis_rate_limit-1.0.0-py3-none-any.whl (6.3 kB 查看哈希值)

上传时间 Python 3

由以下支持