main.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """
  2. FastAPI application entry point.
  3. """
  4. from fastapi import FastAPI
  5. from fastapi.middleware.cors import CORSMiddleware
  6. from app.config import settings
  7. # Create FastAPI app
  8. app = FastAPI(
  9. title=settings.PROJECT_NAME,
  10. version="0.1.0",
  11. description="MyBeacon Backend API - Modular BLE/WiFi monitoring platform",
  12. docs_url="/docs",
  13. redoc_url="/redoc",
  14. )
  15. # Configure CORS
  16. app.add_middleware(
  17. CORSMiddleware,
  18. allow_origins=settings.cors_origins_list,
  19. allow_credentials=True,
  20. allow_methods=["*"],
  21. allow_headers=["*"],
  22. )
  23. @app.get("/")
  24. async def root():
  25. """Root endpoint - API info."""
  26. return {
  27. "name": settings.PROJECT_NAME,
  28. "version": "0.1.0",
  29. "status": "running",
  30. }
  31. @app.get("/health")
  32. async def health_check():
  33. """Health check endpoint."""
  34. return {"status": "healthy"}
  35. # Include routers
  36. from app.api.v1 import router as api_v1_router
  37. app.include_router(api_v1_router, prefix=settings.API_V1_PREFIX)
  38. # Startup event
  39. @app.on_event("startup")
  40. async def startup_event():
  41. """Initialize services on startup"""
  42. # Start tunnel cleanup background task
  43. from app.services.tunnel_service import tunnel_service
  44. tunnel_service.start_background_cleanup()
  45. print("[startup] Tunnel cleanup task started")
  46. # Start host monitoring background task
  47. import asyncio
  48. from app.services.host_monitor import host_monitor
  49. asyncio.create_task(host_monitor.run_monitoring_loop())
  50. print("[startup] Host monitoring task started")
  51. # Shutdown event
  52. @app.on_event("shutdown")
  53. async def shutdown_event():
  54. """Cleanup on shutdown"""
  55. from app.services.host_monitor import host_monitor
  56. await host_monitor.stop()
  57. print("[shutdown] Host monitoring stopped")