Last updated:
0 purchases
asyncioredisratelimit 1.0.0
asyncio-redis-rate-limit
Rate limiter for async functions using Redis as a backend.
Features
Small and simple
Can be used as a decorator or as a context manager
Can be used for both clients and servers
Works with asyncio
Works with any amount of processes
Works with both redis.asyncio.client.Redis and aioredis
Free of race-conditions (hopefully!)
Supports redis since 7.0
Fully typed with annotations and checked with mypy, PEP561 compatible
Installation
pip install asyncio-redis-rate-limit
Extras available:
pip install asyncio-redis-rate-limit[redis]
pip install asyncio-redis-rate-limit[aioredis] (for python versions <3.11)
Example
As a decorator:
>>> 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.
Or as a context manager:
>>> 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.
License
MIT
Credits
This project was generated with wemake-python-package. Current template version is: 1d63652fbb33ebe2f6d932f511b7f529a4ce2d2a. See what is updated since then.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.