Files
ai-training-monitor/backend/app/main.py
2025-01-22 18:04:50 +01:00

60 lines
1.7 KiB
Python

import platform
from datetime import datetime, timezone
import psutil
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.api.routes import training, samples
from app.core.config import settings
app = FastAPI(
title="Training Monitor API",
description="API for monitoring ML training progress and samples",
version="1.0.0",
)
# Configure CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # In production, replace with specific origins
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Include routers with versioning
app.include_router(training.router, prefix=f"{settings.API_VER_STR}/training", tags=["training"])
app.include_router(samples.router, prefix=f"{settings.API_VER_STR}/samples", tags=["samples"])
@app.get("/")
async def root():
"""
Root endpoint providing API status and system information
"""
return {
"name": "Training Monitor API",
"version": "1.0.0",
"status": "operational",
"timestamp": datetime.now(timezone.utc).isoformat(),
"system_info": {
"cpu_usage": f"{psutil.cpu_percent()}%",
"memory_usage": f"{psutil.virtual_memory().percent}%",
"platform": platform.platform(),
"python": platform.python_version(),
},
"endpoints": {
"docs": "/docs",
"health": "/health",
"training_status": "/api/v1/training/status",
"training_log": "/api/v1/training/log",
"samples_list": "/api/v1/samples/list",
"samples_latest": "/api/v1/samples/latest"
}
}
@app.get("/health")
async def health_check():
return {"status": "healthy"}