84 lines
2.0 KiB
Plaintext
84 lines
2.0 KiB
Plaintext
fastapi==0.104.1
|
|
uvicorn[standard]==0.24.0
|
|
sqlalchemy==2.0.23
|
|
asyncpg==0.29.0
|
|
alembic==1.12.1
|
|
pydantic==2.5.0
|
|
pydantic-settings==2.1.0
|
|
httpx==0.25.2
|
|
redis==5.0.1
|
|
aio-pika==9.3.0
|
|
prometheus-client==0.17.1
|
|
python-json-logger==2.0.4
|
|
|
|
# ML dependencies
|
|
prophet==1.1.4
|
|
scikit-learn==1.3.2
|
|
pandas==2.1.4
|
|
numpy==1.24.4
|
|
joblib==1.3.2
|
|
scipy==1.11.4
|
|
|
|
# Utilities
|
|
pytz==2023.3
|
|
python-dateutil==2.8.2# services/training/app/main.py
|
|
"""
|
|
Training Service
|
|
Handles ML model training for bakery demand forecasting
|
|
"""
|
|
|
|
import logging
|
|
from fastapi import FastAPI, BackgroundTasks
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
from app.core.config import settings
|
|
from app.core.database import database_manager
|
|
from app.api import training, models
|
|
from app.services.messaging import message_publisher
|
|
from shared.monitoring.logging import setup_logging
|
|
from shared.monitoring.metrics import MetricsCollector
|
|
|
|
# Setup logging
|
|
setup_logging("training-service", settings.LOG_LEVEL)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# Create FastAPI app
|
|
app = FastAPI(
|
|
title="Training Service",
|
|
description="ML model training service for bakery demand forecasting",
|
|
version="1.0.0"
|
|
)
|
|
|
|
# Initialize metrics collector
|
|
metrics_collector = MetricsCollector("training-service")
|
|
|
|
# CORS middleware
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
# Include routers
|
|
app.include_router(training.router, prefix="/training", tags=["training"])
|
|
app.include_router(models.router, prefix="/models", tags=["models"])
|
|
|
|
@app.on_event("startup")
|
|
async def startup_event():
|
|
"""Application startup"""
|
|
logger.info("Starting Training Service")
|
|
|
|
# Create database tables
|
|
await database_manager.create_tables()
|
|
|
|
# Initialize message publisher
|
|
await message_publisher.connect()
|
|
|
|
# Start metrics server
|
|
metrics_collector.start_metrics_server(8080)
|
|
|
|
logger.info("Training Service started successfully")
|
|
|
|
@ |