60 lines
1.7 KiB
Python
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"}
|