Skip to main content

Rate limit a function using Redis as a backend

Project description

aio-rate-limiter

License

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


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 details)

Uploaded Source

Built Distribution

aio_rate_limiter-0.1.2-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file aio-rate-limiter-0.1.2.tar.gz.

File metadata

  • Download URL: aio-rate-limiter-0.1.2.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.6.8 Darwin/19.6.0

File hashes

Hashes for aio-rate-limiter-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e6b85d9a956b221aa43404c1e1ffc9e74229a96504d168b192ee2f105d84748d
MD5 dc9c4edbc5848676f35ef0e46b2321d6
BLAKE2b-256 ef28ec86596e2bbc74112b43897aaf834bf519668f033ff830930f16eda224f2

See more details on using hashes here.

File details

Details for the file aio_rate_limiter-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for aio_rate_limiter-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 540c00258a9a02712ee0b9d94f42b6771e25b7072d705a356bc5564b57118549
MD5 0a289fda82da5695dbb87104d5587cca
BLAKE2b-256 d1cb73618ad27ff856014f9738d38c7943182f49966ce5ac87e1a4833f85d6a7

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