Abeshith's picture
Added Monitoring Stages
b53ee19
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from app.routers import health, predict, train, ui, monitoring
from mlpipeline.exception import MLPipelineException
from app.utils.metrics import MetricsMiddleware
import uvicorn
app = FastAPI(
title="AutoML MLOps API",
description="AutoML pipeline API for heart disease prediction",
version="1.0.0"
)
app.mount("/static", StaticFiles(directory="app/static"), name="static")
templates = Jinja2Templates(directory="app/templates")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Add metrics middleware
app.middleware("http")(MetricsMiddleware())
app.include_router(health.router)
app.include_router(predict.router)
app.include_router(train.router)
app.include_router(ui.router)
app.include_router(monitoring.router)
@app.exception_handler(MLPipelineException)
async def mlpipeline_exception_handler(request: Request, exc: MLPipelineException):
return JSONResponse(
status_code=500,
content={"error": str(exc)}
)
@app.get("/")
async def root(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
if __name__ == "__main__":
uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True)