File size: 1,169 Bytes
9afba1d f64e40d 805e1e5 7b30c7c f64e40d 5fb4c10 805e1e5 f64e40d 805e1e5 9afba1d 805e1e5 f64e40d 805e1e5 9afba1d 5fb4c10 805e1e5 7b30c7c 88da32f 805e1e5 88da32f 9afba1d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | from fastapi import FastAPI, Request
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.middleware import SlowAPIMiddleware
from slowapi.errors import RateLimitExceeded
from slowapi.util import get_remote_address
from fastapi.responses import JSONResponse
from features.text_classifier.routes import router as text_classifier_router
from config import ACCESS_RATE
import requests
limiter = Limiter(key_func=get_remote_address, default_limits=[ACCESS_RATE])
app = FastAPI()
# Set up SlowAPI
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, lambda request, exc: JSONResponse(
status_code=429,
content={
"status_code": 429,
"error": "Rate limit exceeded",
"message": "Too many requests. Chill for a bit and try again"
}
))
app.add_middleware(SlowAPIMiddleware)
# Include your routes
app.include_router(text_classifier_router, prefix="/text")
@app.get("/")
@limiter.limit(ACCESS_RATE)
async def root(request: Request):
return {
"message": "API is working",
"endpoints": ["/text/analyse", "/text/upload", "/text/analyse-sentences", "/text/analyse-sentance-file"]
}
|