dify插件初步构建
This commit is contained in:
78
difyPlugin/app/main.py
Normal file
78
difyPlugin/app/main.py
Normal file
@@ -0,0 +1,78 @@
|
||||
"""FastAPI 应用入口"""
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
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():
|
||||
"""服务健康检查"""
|
||||
|
||||
Reference in New Issue
Block a user