Files
aiData/YLT_Analytics_Api.py

64 lines
1.8 KiB
Python
Raw Normal View History

2026-01-18 15:43:02 +08:00
import os
import sys
2026-01-18 16:02:40 +08:00
import logging
from contextlib import asynccontextmanager
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
2026-01-18 15:43:02 +08:00
project_root = os.path.dirname(os.path.abspath(__file__))
if project_root not in sys.path:
sys.path.append(project_root)
2026-01-18 16:02:40 +08:00
def setup_api_logger():
logger = logging.getLogger("YLT_Analytics_Api")
logger.setLevel(logging.INFO)
logger.propagate = False
if logger.handlers:
return logger
log_dir = os.path.join(project_root, "Logs")
os.makedirs(log_dir, exist_ok=True)
log_file = os.path.join(log_dir, "YLT_Analytics_Api.log")
file_handler = logging.FileHandler(log_file, encoding="utf-8")
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
logger = setup_api_logger()
logger.info("YLT_Analytics_Api module imported")
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
from Controller.YltAnalyticsController import router, init_db, close_db
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("YLT Analytics API startup")
await init_db()
try:
yield
finally:
logger.info("YLT Analytics API shutdown")
await close_db()
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
app = FastAPI(title="YLT Analytics API", lifespan=lifespan)
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
static_dir = os.path.join(project_root, "static")
app.mount("/static", StaticFiles(directory=static_dir), name="static")
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
app.include_router(router)
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
if __name__ == "__main__":
logger.info("Starting YLT Analytics API with uvicorn on http://0.0.0.0:8000")
import uvicorn
2026-01-18 15:43:02 +08:00
2026-01-18 16:02:40 +08:00
uvicorn.run(app, host="0.0.0.0", port=8000)