You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.8 KiB

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)