1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
| """
| 主应用入口
| """
|
| import uvicorn
| from fastapi import FastAPI
| from fastapi.middleware.cors import CORSMiddleware
| from contextlib import asynccontextmanager
| from loguru import logger
| from config import settings
| from app.api.callback import router as callback_router
| from app.models.database import create_tables
| from app.workers.message_worker import message_worker
|
|
| @asynccontextmanager
| async def lifespan(app: FastAPI):
| """应用生命周期管理"""
| # 启动时执行
| logger.info("正在启动应用...")
|
| # 创建数据库表
| try:
| create_tables()
| logger.info("数据库表创建成功")
| except Exception as e:
| logger.error(f"数据库表创建失败: {str(e)}")
|
| # 启动消息工作进程
| try:
| message_worker.start()
| logger.info("消息工作进程启动成功")
| except Exception as e:
| logger.error(f"消息工作进程启动失败: {str(e)}")
|
| logger.info("应用启动完成")
|
| yield
|
| # 关闭时执行
| logger.info("正在关闭应用...")
|
| # 停止消息工作进程
| try:
| message_worker.stop()
| logger.info("消息工作进程已停止")
| except Exception as e:
| logger.error(f"消息工作进程停止失败: {str(e)}")
|
| logger.info("应用已关闭")
|
|
| # 创建FastAPI应用
| app = FastAPI(
| title="E云管家-DifyAI对接服务",
| description="将E云管家消息转发到DifyAI并返回AI回答",
| version="1.0.0",
| lifespan=lifespan,
| )
|
| # 添加CORS中间件
| app.add_middleware(
| CORSMiddleware,
| allow_origins=["*"],
| allow_credentials=True,
| allow_methods=["*"],
| allow_headers=["*"],
| )
|
| # 注册路由
| app.include_router(callback_router, prefix="/api/v1", tags=["回调接口"])
|
|
| @app.get("/")
| async def root():
| """根路径"""
| return {
| "message": "E云管家-DifyAI对接服务",
| "version": "1.0.0",
| "status": "running",
| }
|
|
| if __name__ == "__main__":
| # 配置日志
| logger.add(
| settings.log_file,
| rotation="1 day",
| retention="30 days",
| level=settings.log_level,
| format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} - {message}",
| )
|
| logger.info("启动E云管家-DifyAI对接服务")
|
| # 启动服务
| uvicorn.run(
| "main:app",
| host=settings.server_host,
| port=settings.server_port,
| reload=settings.debug,
| log_level=settings.log_level.lower(),
| )
|
|