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+.
pip install aio-rate-limiter
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")
# 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 publish --build