Spaces:
Running
Running
File size: 1,500 Bytes
5c61354 475d366 b53ee19 5c61354 b53ee19 5c61354 475d366 5c61354 b53ee19 5c61354 475d366 b53ee19 5c61354 475d366 5c61354 | 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 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)
|