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)