main.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from contextlib import asynccontextmanager
  2. from apscheduler.schedulers.background import BackgroundScheduler
  3. from fastapi import FastAPI
  4. from fastapi.middleware.cors import CORSMiddleware
  5. from starlette.staticfiles import StaticFiles
  6. from app.api.auth import router as auth_router
  7. from app.api.canvas import canvas_router
  8. from app.api.chat import router as chat_router
  9. from app.api.agent import router as agent_router
  10. from app.api.dialog import dialog_router
  11. from app.api.excel import router as excel_router
  12. from app.api.files import router as files_router
  13. from app.api.knowledge import knowledge_router
  14. from app.api.label import label_router
  15. from app.api.llm import llm_router
  16. from app.api.organization import dept_router
  17. from app.api.v2.chat import chat_router_v2
  18. from app.api.v2.public_api import public_api
  19. from app.api.report import router as report_router
  20. from app.api.resource import menu_router
  21. # from app.api.sync_data import sync_router
  22. from app.api.user import user_router
  23. from app.api.group import group_router
  24. from app.api.role import role_router
  25. from app.models.base_model import init_db
  26. from app.task.delete_execl_file import delete_file_after_delay
  27. # from app.models.base_model import init_db
  28. from app.task.fetch_agent import sync_agents, initialize_agents, sync_agents_v2, sync_knowledge, \
  29. sync_resources_from_json
  30. from app.init_config.init_run_data import sync_default_data
  31. from app.task.sync_account_token import sync_token, start_sync_token_task
  32. init_db()
  33. # 使用 Lifespan 事件处理程序
  34. @asynccontextmanager
  35. async def lifespan(app: FastAPI):
  36. # 初始化代理
  37. # initialize_agents()
  38. # # 在应用启动时同步代理
  39. # sync_agents()
  40. await sync_default_data()
  41. sync_agents_v2()
  42. sync_knowledge()
  43. sync_resources_from_json()
  44. yield
  45. # 在应用关闭时执行清理操作(如果需要)
  46. pass
  47. app = FastAPI(
  48. title="basic_rag_gateway",
  49. version="0.1",
  50. description="",
  51. lifespan=lifespan
  52. )
  53. # 设置 CORS 中间件
  54. # app.add_middleware(
  55. # CORSMiddleware,
  56. # allow_origins=["*"],
  57. # allow_credentials=True,
  58. # allow_methods=["*"], # 允许所有方法
  59. # allow_headers=["*"], # 允许所有头部
  60. # )
  61. # 创建调度器
  62. scheduler = BackgroundScheduler()
  63. scheduler.add_job(sync_agents_v2, 'interval', minutes=60, id="sync_resource_data")
  64. scheduler.add_job(start_sync_token_task, 'interval', minutes=5, id="sync_token_1")
  65. # scheduler.add_job(delete_file_after_delay, 'interval', minutes=10, id="delete_file_after_delay")
  66. scheduler.start()
  67. app.include_router(auth_router, prefix='/api/auth', tags=["auth"])
  68. app.include_router(chat_router, prefix='/api/chat', tags=["chat"])
  69. app.include_router(agent_router, prefix='/api/agent', tags=["agent"])
  70. app.include_router(excel_router, prefix='/api/document', tags=["document"])
  71. app.include_router(files_router, prefix='/api/files', tags=["files"])
  72. app.include_router(report_router, prefix='/api/report', tags=["report"])
  73. app.include_router(user_router, prefix='/api/user', tags=["user"])
  74. app.include_router(group_router, prefix='/api/group', tags=["group"])
  75. app.include_router(role_router, prefix='/api/role', tags=["role"])
  76. app.include_router(dept_router, prefix='/api/dept', tags=["dept"])
  77. app.include_router(menu_router, prefix='/api/menu', tags=["menu"])
  78. app.include_router(knowledge_router, prefix='/api/knowledge', tags=["knowledge"])
  79. app.include_router(llm_router, prefix='/api/llm', tags=["llm"])
  80. app.include_router(dialog_router, prefix='/api/dialog', tags=["dialog"])
  81. app.include_router(canvas_router, prefix='/api/canvas', tags=["canvas"])
  82. app.include_router(label_router, prefix='/api/label', tags=["label"])
  83. app.include_router(public_api, prefix='/v1/api', tags=["public_api"])
  84. app.include_router(chat_router_v2, prefix='/api/v1/chat', tags=["chat1"])
  85. app.mount("/static", StaticFiles(directory="app/images"), name="static")
  86. if __name__ == "__main__":
  87. import uvicorn
  88. uvicorn.run(app, host="0.0.0.0", port=9201)