Skip to content

Flask

Setup

pip install drogue[flask]
from flask import Flask
from drogue.adapters.flask import DrogueLimiter

app = Flask(__name__)
limiter = DrogueLimiter(app, default_limits=["100/minute"])

Decorator

@app.route("/api/data")
@limiter.limit("10/minute")
def get_data():
    return {"data": "value"}

Global limits

limiter = DrogueLimiter(app, default_limits=["100/minute"])

Multiple rules

@app.route("/api/data")
@limiter.limit("10/minute")
@limiter.limit("100/hour")
def get_data(): ...

Custom key function

from drogue.core.identity import UserExtractor

limiter = DrogueLimiter(app, key_func=UserExtractor())

@app.route("/api/data")
@limiter.limit("10/minute")
def get_data(): ...

Algorithm selection

from drogue.core.rules.rule import AlgorithmType

@app.route("/api/data")
@limiter.limit("10/minute", algorithm=AlgorithmType.SLIDING_WINDOW)
def get_data(): ...

Configuration

from drogue.core.config import DrogueConfig

config = DrogueConfig(ban_enabled=True, ddos_enabled=True)
limiter = DrogueLimiter(app, config=config)