AyoubChLin's picture
feat: enhance classifier service with model warmup and dynamic quantization
59b46a2
import logging
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from app.api.router import api_router
from app.core.config import settings
from app.core.exceptions import ClassificationError
from app.services.classifier_service import classifier_service
logger = logging.getLogger(__name__)
settings.static_dir.mkdir(parents=True, exist_ok=True)
settings.upload_dir.mkdir(parents=True, exist_ok=True)
app = FastAPI(title=settings.app_name, debug=settings.debug)
app.mount("/static", StaticFiles(directory=str(settings.static_dir)), name="static")
app.include_router(api_router)
@app.on_event("startup")
def preload_classifier_model() -> None:
try:
classifier_service.warmup()
logger.info("Classifier model preloaded on startup")
except ClassificationError:
logger.exception("Classifier model warmup failed")
@app.get("/endpoint/")
def list_endpoints() -> list[dict]:
endpoints = []
for route in app.routes:
methods = sorted((route.methods or set()) & {"GET", "POST", "PUT", "DELETE"})
if methods:
endpoints.append({"endpoint": route.path, "methods": methods})
return endpoints