Add config parsing support in backend

Signed-off-by: Felipe Cardoso <felipe.cardoso@hotmail.it>
This commit is contained in:
2025-01-23 13:46:30 +01:00
parent f99564434a
commit 37b71464f6
6 changed files with 309 additions and 5 deletions

View File

@@ -6,8 +6,9 @@ import psutil
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.api.routes import training, samples
from app.api.routes import training, samples, config
from app.core.config import settings
from app.services.config_manager import ConfigManager
from app.services.sample_manager import SampleManager
from app.services.training_monitor import TrainingMonitor
@@ -35,17 +36,60 @@ app.add_middleware(
# Create and store SampleManager instance
sample_manager = SampleManager()
training_monitor = TrainingMonitor()
config_manager = ConfigManager()
app.state.sample_manager = sample_manager
app.state.training_monitor = training_monitor
app.state.config_manager = config_manager
async def initialize_services():
"""
Initializes all service managers in the correct order, ensuring dependencies
are properly set up before they're needed.
"""
logger.info("Starting services initialization...")
# First, initialize config manager as other services might need configuration
config_manager = ConfigManager()
app.state.config_manager = config_manager
try:
# Load initial configuration
config = await config_manager.get_config()
logger.info(f"Configuration loaded successfully for job: {config.job}")
# Store config in app state for easy access
app.state.training_config = config
# Initialize other managers with access to config
sample_manager = SampleManager()
training_monitor = TrainingMonitor()
# Store managers in app state
app.state.sample_manager = sample_manager
app.state.training_monitor = training_monitor
# Start the managers
await sample_manager.startup()
await training_monitor.startup()
logger.info("All services initialized successfully")
except Exception as e:
logger.error(f"Failed to initialize services: {str(e)}")
# Re-raise to prevent app from starting with partially initialized services
raise
@app.on_event("startup")
async def startup_event():
"""Initialize services on startup"""
"""
Startup event handler that ensures all services are properly initialized
before the application starts accepting requests.
"""
logger.info("Starting up Training Monitor API")
await sample_manager.startup()
await training_monitor.startup()
await initialize_services()
@@ -60,6 +104,7 @@ async def shutdown_event():
# 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.include_router(config.router, prefix=f"{settings.API_VER_STR}/config", tags=["config"])
@app.get("/")