61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
from fastapi import FastAPI
|
||
from fastapi.middleware.cors import CORSMiddleware
|
||
import asyncio
|
||
|
||
from app.application.token_middleware import TokenMiddleware
|
||
from app.application.logger_middleware import LoggerMiddleware
|
||
from app.api.common.upload_file import upload_files
|
||
from app.api.sys.login_api import login
|
||
from app.api.sys.sys_user_api import user
|
||
from app.api.business.project_train_api import project
|
||
from app.api.common.view_img import view
|
||
from app.api.business.project_detect_api import detect
|
||
from app.api.business.websocket_api import web_socket
|
||
from app.util.ps_util import get_server_json
|
||
from app.websocket.web_socket_server import room_manager
|
||
|
||
my_app = FastAPI()
|
||
|
||
|
||
'''
|
||
添加CROS中间件,允许跨域请求
|
||
'''
|
||
my_app.add_middleware(
|
||
CORSMiddleware,
|
||
allow_origins=["*"],
|
||
allow_credentials=True,
|
||
allow_methods=["*"],
|
||
allow_headers=["*"],
|
||
)
|
||
|
||
'''
|
||
注意中间的顺序,这个地方是倒序执行的
|
||
'''
|
||
my_app.add_middleware(LoggerMiddleware)
|
||
my_app.add_middleware(TokenMiddleware)
|
||
|
||
my_app.include_router(view, tags=["查看图片"])
|
||
my_app.include_router(login, prefix="/login", tags=["用户登录接口"])
|
||
my_app.include_router(upload_files, prefix="/upload", tags=["文件上传API"])
|
||
my_app.include_router(user, prefix="/user", tags=["用户管理API"])
|
||
my_app.include_router(project, prefix="/proj", tags=["项目训练API"])
|
||
my_app.include_router(detect, prefix="/detect", tags=["项目推理API"])
|
||
my_app.include_router(web_socket, prefix="/ws", tags=["websocket管理"])
|
||
|
||
|
||
# fastapi定时执行任务
|
||
async def serve_info_task():
|
||
while True:
|
||
server_json = get_server_json()
|
||
await room_manager.send_to_room('server-info', server_json)
|
||
await asyncio.sleep(5) # 每 5 秒执行
|
||
|
||
|
||
@my_app.on_event("startup")
|
||
async def start_periodic_task():
|
||
# 在后台启动异步任务
|
||
asyncio.create_task(serve_info_task())
|
||
|
||
|
||
|