Files
urbanLifeline/difyPlugin/app/main.py
2025-12-30 18:37:07 +08:00

80 lines
1.9 KiB
Python

"""FastAPI 应用入口"""
from contextlib import asynccontextmanager
import os
import sys
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.config import settings
from app.api import router as api_router
from app.core.exceptions import register_exception_handlers
from app.core.redis import RedisService
@asynccontextmanager
async def lifespan(app: FastAPI):
"""应用生命周期管理"""
# 启动时初始化
await RedisService.init()
yield
# 关闭时清理
await RedisService.close()
def create_app() -> FastAPI:
"""创建FastAPI应用实例"""
app = FastAPI(
title=settings.APP_NAME,
version=settings.APP_VERSION,
description="Dify插件服务API",
openapi_url=f"{settings.API_V1_PREFIX}/openapi.json",
docs_url="/docs",
redoc_url="/redoc",
lifespan=lifespan,
servers=[
{"url": f"http://{settings.API_HOST}:{settings.PORT}", "description": "API服务器"},
],
)
# 注册CORS中间件
app.add_middleware(
CORSMiddleware,
allow_origins=settings.CORS_ORIGINS,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 注册异常处理器
register_exception_handlers(app)
# 注册路由
app.include_router(api_router, prefix=settings.API_V1_PREFIX)
return app
app = create_app()
def print_routes(app: FastAPI):
"""打印所有注册的路由"""
print("\n" + "=" * 60)
print("Registered Routes:")
print("=" * 60)
for route in app.routes:
if hasattr(route, "methods"):
methods = ", ".join(route.methods - {"HEAD", "OPTIONS"})
print(f" {methods:8} {route.path}")
print("=" * 60 + "\n")
# 启动时打印路由
print_routes(app)
@app.get("/health", tags=["健康检查"], summary="健康检查接口")
async def health_check():
"""服务健康检查"""