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/": {"limit": 60, "period": 60},
    "/api/users": {"limit": 1, "period": 2},
}

app.add_middleware(
    RateLimiterMiddleware,
    rules=rules,
    backend=backend,
    trusted_proxies=["127.0.0.1"]
)

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.9.tar.gz (4.9 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.9-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_easylimiter-0.1.9.tar.gz
  • Upload date:
  • Size: 4.9 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.9.tar.gz
Algorithm Hash digest
SHA256 a16fa6659850f113a2bb85d0d8efbb66b2c45206ef6082e47ac0d45db98d536a
MD5 4a081823223056ee123cbdb06cfa3205
BLAKE2b-256 72c2b6bf73a67993ae4f2f57decb2fbcc906f3b8987840021a29bdf1f89ed06d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fastapi_easylimiter-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 4d7578fafc9b8851172cbb3e9d854412cb72353f4d7c5b4ab58adf309d54724f
MD5 e123bc429314bba563962fbcecf79f21
BLAKE2b-256 9ee0eac0bf442965c939570bfca36cd69219751dfae4a83151ab74f32b6d2837

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