Rate limit a function using Redis as a backend
Project description
aio-rate-limiter
Rate limit a function using Redis as a backend. This is a smaller library modeled after python-redis-rate-limit but it uses aioredis. Supports Python 3.6+.
Installation
pip install aio-rate-limiter
Example
import logging
from aio_rate_limiter import RateLimiter, TooManyRequests
import aioredis
async def example():
pool = await aioredis.create_redis_pool("redis://localhost:6379")
try:
async with RateLimiter(
redis_pool,
# Rate limit requests to a resource
"name-of-external-system",
# Allow up to 100 requests in 60 seconds
max_requests=100,
time_window=60
):
async do_work()
except TooManyRequests:
logging.warning("Try again later")
Development
# Install poetry
pip install poetry
# Install all package dependencies
poetry install
# Launch a shell with dependencies available
poetry shell
# Run tests (requires Redis server running at localhost:6379)
pytest
# When you're ready to publish...
# Bump version
poetry version <version>
# Set your pypi token
export POETRY_PYPI_TOKEN_PYPI='...'
# Build and publish
poetry build
poetry publish
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aio-rate-limiter-0.1.2.tar.gz
(4.0 kB
view hashes)
Built Distribution
Close
Hashes for aio_rate_limiter-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 540c00258a9a02712ee0b9d94f42b6771e25b7072d705a356bc5564b57118549 |
|
MD5 | 0a289fda82da5695dbb87104d5587cca |
|
BLAKE2b-256 | d1cb73618ad27ff856014f9738d38c7943182f49966ce5ac87e1a4833f85d6a7 |