Skip to main content

High-performance async rate limiter for FastAPI with Redis or native in-memory backend

Project description

fastapi-easylimiter

Simple async rate-limiting middleware for FastAPI with Redis or in-memory caching.

Simple design

  • Async rate limiting
  • Redis or in-memory cache
  • Easy rules per URL paths.
  • Optional rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After)

Installation

pip install fastapi-easylimiter

Usage

from fastapi import FastAPI
from fastapi_easylimiter import AsyncRedisBackend, InMemoryBackend, RateLimiterMiddleware
import redis.asyncio as redis_async

app = FastAPI()

REDIS_URL = "redis://localhost:6379/0"

# Redis backend (recommended for multi-instance deployments)
redis_client = redis_async.from_url(REDIS_URL, decode_responses=True)
backend = AsyncRedisBackend(redis_client)

# Or for single-instance/local development:
# backend = InMemoryBackend()

rules = {
    "/api/users": {"limit": 1, "period": 2},
    "/api/": {"limit": 60, "period": 60}, # GLOBAL ONES GO LAST
}

app.add_middleware(
    RateLimiterMiddleware,
    rules=rules,
    backend=backend,
    backoff_threshold=3,
    max_backoff=60
)

Contributing

Contributions and forks are always welcome! Feel free to adapt, improve, or extend this middleware for your own needs. This was purely made out of personal necessity.

Support

Buy Me a Coffee

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

fastapi_easylimiter-0.1.5.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_easylimiter-0.1.5-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_easylimiter-0.1.5.tar.gz.

File metadata

  • Download URL: fastapi_easylimiter-0.1.5.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for fastapi_easylimiter-0.1.5.tar.gz
Algorithm Hash digest
SHA256 24063690b8b855c623f4a63f0891e750fb1c2aae0ac5559a0928d91fb690d298
MD5 fa709f85b8018162ad67cdb23d9e791e
BLAKE2b-256 0a0129334d59c7b794b4ee77cd8a63eaa237e645a92d509745f4e6631f40c0aa

See more details on using hashes here.

File details

Details for the file fastapi_easylimiter-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_easylimiter-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 54214ae029aad39c636232e1974b4204365525e2e6a32aa33372e418f0f6f272
MD5 24770e75bf91d601015d7e7ffd863c23
BLAKE2b-256 ce5c72e85e21666ad2eae61701e78bc95c6462e926c9382b6dcd8418162fd603

See more details on using hashes here.

Supported by

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