71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
import os
|
||
import sys
|
||
import logging
|
||
from contextlib import asynccontextmanager
|
||
|
||
from fastapi import FastAPI
|
||
from fastapi.staticfiles import StaticFiles
|
||
|
||
project_root = os.path.dirname(os.path.abspath(__file__))
|
||
if project_root not in sys.path:
|
||
sys.path.append(project_root)
|
||
|
||
|
||
def setup_api_logger():
|
||
logger = logging.getLogger("Start")
|
||
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, "Start.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
|
||
|
||
|
||
logger = setup_api_logger()
|
||
logger.info("驿来特AI智能分析系统模块导入完成!")
|
||
|
||
from Controller.YltAnalyticsController import router as ylt_router, init_db, close_db
|
||
from Controller.DegreeController import router as degree_router
|
||
from Util.Win32Patch import patch
|
||
from Util.RedisKit import RedisKit
|
||
|
||
patch()
|
||
|
||
@asynccontextmanager
|
||
async def lifespan(app: FastAPI):
|
||
logger.info("驿来特AI智能分析系统开始启动...")
|
||
await init_db()
|
||
# Initialize Redis connection
|
||
await RedisKit().get_connection()
|
||
try:
|
||
yield
|
||
finally:
|
||
logger.info("驿来特AI智能分析系统关闭...")
|
||
await close_db()
|
||
|
||
|
||
app = FastAPI(title="驿来特AI智能分析系统", lifespan=lifespan)
|
||
|
||
static_dir = os.path.join(project_root, "static")
|
||
app.mount("/static", StaticFiles(directory=static_dir), name="static")
|
||
|
||
|
||
app.include_router(ylt_router)
|
||
app.include_router(degree_router)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
logger.info("Starting 驿来特AI智能分析系统 with uvicorn on http://0.0.0.0:8000")
|
||
import uvicorn
|
||
|
||
uvicorn.run(app, host="0.0.0.0", port=8000)
|