iunary / fastapi-redis-rate-limiter

fastapi-redis-rate-limiter
MIT License
4 stars 0 forks source link
fastapi python3 rate-limiter redis

Fastapi rate limiter

Fastapi redis rate limiter middleware

Redis Rate Limiter Middleware is a Python module that provides rate limiting functionality for FastAPI applications using Redis as the storage backend. It allows you to limit the number of requests a client can make within a specified time window.

Features

Installation

Install the Redis Rate Limiter Middleware module using pip:

pip install fastapi_redis_rate_limiter

Usage

Here's an example of how to use the Redis Rate Limiter Middleware in a FastAPI application:

from fastapi import FastAPI
from fastapi_redis_rate_limiter import RedisRateLimiterMiddleware, RedisClient

app = FastAPI()

# Initialize the Redis client
redis_client = RedisClient(host="localhost", port=6379, db=0)

# Apply the rate limiter middleware to the app
app.add_middleware(RedisRateLimiterMiddleware, redis_client=redis_client, limit=40, window=60)

@app.get("/limited")
async def limited():
    return {"message": "This is a protected endpoint."}

# Run the FastAPI application
if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="0.0.0.0", port=8000)

In this example, we create a FastAPI application and initialize a Redis client using RedisClient. Then, we add RedisRateLimiterMiddleware to the app middleware using add_middleware and by passing in Redis client, rate limit, and time window.

Make sure to adjust the Redis connection parameters (host, port, and db) according to your Redis server configuration.

Configuration

The RedisRateLimiterMiddleware accepts the following parameters:

Adjust the limit and window values according to your desired rate limiting requirements.

Contributions

Contributions, issues, and feature requests are welcome! Feel free to open a new issue or submit a pull request on GitHub.

License

This project is licensed under the MIT License. See the LICENSE file for details.