import threading import uvicorn import asyncio from fastapi.middleware.cors import CORSMiddleware from starlette.staticfiles import StaticFiles from tasks.BackgroundTasks import train_document_task from fastapi import FastAPI from utils.Database import * # 导入路由 from routes import * # 在程序开始时添加以下配置 logging.basicConfig( level=logging.INFO, # 设置日志级别为INFO format='%(asctime)s - %(levelname)s - %(message)s' ) async def lifespan(app: FastAPI): print("Starting up...") # 启动异步任务 asyncio.create_task(train_document_task()) try: yield finally: print("Shutting down...") # 如果有需要在关闭时执行的任务,可以在这里添加 app = FastAPI(lifespan=lifespan) # 配置FastAPI支持CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"] ) # 挂载静态文件目录 app.mount("/static", StaticFiles(directory="Static"), name="static") # 注册路由 # 登录相关(不用登录) app.include_router(login_router, prefix="/api/login", tags=["login"]) # 用户相关 app.include_router(user_router, prefix="/api/user", tags=["user"]) # 主题相关 app.include_router(theme_router, prefix="/api/theme", tags=["theme"]) # 文档相关 app.include_router(document_router, prefix="/api/document", tags=["document"]) # 问题相关(大模型应用) app.include_router(teaching_model_router, prefix="/api/teaching/model", tags=["question"]) # 字典相关(Dm) app.include_router(dm_router, prefix="/api/dm", tags=["dm"]) # 测试相关 # app.include_router(test_router, prefix="/api/test", tags=["test"]) if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8888)