Skip to main content

Rate limiter for async functions using Redis as a backend

Project description

asyncio-redis-rate-limit

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

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
  • Free of race-conditions (hopefully!)
  • Fully typed with annotations and checked with mypy, PEP561 compatible

Installation

pip install asyncio-redis-rate-limit

Example

>>> 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() -> int:
...     ...   # 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asyncio-redis-rate-limit-0.1.1.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

asyncio_redis_rate_limit-0.1.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file asyncio-redis-rate-limit-0.1.1.tar.gz.

File metadata

  • Download URL: asyncio-redis-rate-limit-0.1.1.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.9 Darwin/18.7.0

File hashes

Hashes for asyncio-redis-rate-limit-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a0963af954eed9e370132215d6d529aaed483644ee376b7d2fad41d1ac586c21
MD5 e87c8edeed977361043b1b630b6ed163
BLAKE2b-256 75c4ba674eda5b8477ea50dcd671b93743e1733736dbe52c0ef8f999c799e519

See more details on using hashes here.

File details

Details for the file asyncio_redis_rate_limit-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for asyncio_redis_rate_limit-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5f7af059ffefe746ce05ff3420d3ae4a6ba56a4da78d1055da48e7e7ca72ad72
MD5 912430590b80dd49ecfe0806c9362d49
BLAKE2b-256 48880602b7f7291ad9b046c1bedfd30461210bb1c7e09a588b369e4e6c59a617

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page