| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- """
- FastAPI application entry point.
- """
- from fastapi import FastAPI
- from fastapi.middleware.cors import CORSMiddleware
- from app.config import settings
- from app.core.http_metrics import HTTPMetricsMiddleware
- # Create FastAPI app
- app = FastAPI(
- title=settings.PROJECT_NAME,
- version="0.1.0",
- description="MyBeacon Backend API - Modular BLE/WiFi monitoring platform",
- docs_url="/docs",
- redoc_url="/redoc",
- )
- # Configure CORS
- app.add_middleware(
- CORSMiddleware,
- allow_origins=settings.cors_origins_list,
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
- # Add HTTP metrics middleware
- app.add_middleware(HTTPMetricsMiddleware)
- @app.get("/")
- async def root():
- """Root endpoint - API info."""
- return {
- "name": settings.PROJECT_NAME,
- "version": "0.1.0",
- "status": "running",
- }
- @app.get("/health")
- async def health_check():
- """Health check endpoint."""
- return {"status": "healthy"}
- # Include routers
- from app.api.v1 import router as api_v1_router
- app.include_router(api_v1_router, prefix=settings.API_V1_PREFIX)
- # Startup event
- @app.on_event("startup")
- async def startup_event():
- """Initialize services on startup"""
- # Start tunnel cleanup background task
- from app.services.tunnel_service import tunnel_service
- tunnel_service.start_background_cleanup()
- print("[startup] Tunnel cleanup task started")
- # Start host monitoring background task
- import asyncio
- from app.services.host_monitor import host_monitor
- asyncio.create_task(host_monitor.run_monitoring_loop())
- print("[startup] Host monitoring task started")
- # Shutdown event
- @app.on_event("shutdown")
- async def shutdown_event():
- """Cleanup on shutdown"""
- from app.services.host_monitor import host_monitor
- await host_monitor.stop()
- print("[shutdown] Host monitoring stopped")
|