| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from fastapi import FastAPI
- from contextlib import asynccontextmanager
- import uvicorn
- from pathlib import Path
- from datetime import datetime
- from typing import List, Dict, Optional
- from pydantic import BaseModel
- import yaml
- import asyncio
- import httpx
- from config.settings import settings
- from routers.subscriptions import router
- from utils.mihomo_service import download_mihomo
- from database.engine import create_db_and_tables
- from aiomultiprocess import Pool
- @asynccontextmanager
- async def lifespan(app: FastAPI):
- """应用生命周期管理"""
- # 初始化目录结构
- settings.PATH_CONFIG_DIR.mkdir(parents=True, exist_ok=True)
- settings.PATH_SUBSCRIPTION_DIR.mkdir(parents=True, exist_ok=True)
- create_db_and_tables()
- # 检查并下载mihomo
- await download_mihomo()
- yield
- app = FastAPI(lifespan=lifespan)
- # 注册路由
- app.include_router(router, prefix="/subscriptions", tags=["订阅管理"])
- # 添加健康检查路由
- @app.get("/health")
- async def health_check():
- """服务健康检查"""
- return {"status": "healthy"}
- @app.get("/")
- async def root():
- return {
- "message": "代理池管理API",
- "endpoints": {
- "/docs": "API文档",
- "/configs": "配置管理",
- "/subscriptions": "订阅管理"
- }
- }
- if __name__ == "__main__":
- uvicorn.run("main:app", host=settings.HOST, port=settings.PORT, reload=settings.DEBUG)
|