asyncio-redis-rate-limit 1.0.0

Last updated:

0 purchases

asyncio-redis-rate-limit 1.0.0 Image
asyncio-redis-rate-limit 1.0.0 Images
Add to Cart

Description:

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.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.