主题功能完成

This commit is contained in:
2025-02-24 11:05:17 +08:00
parent e56e03f545
commit 47a9164083
43 changed files with 10352 additions and 69 deletions

View File

@ -153,13 +153,19 @@ def get_img_leafer(image_id: int, session: Session = Depends(get_db)):
@project.get("/run_train/{project_id}")
def run_train(project_id: int, session: Session = Depends(get_db)):
async def run_train(project_id: int, session: Session = Depends(get_db)):
"""
执行项目训练方法
:param project_id:
:param session:
:return:
"""
project_info = pic.get_project_by_id(project_id, session)
if project_info is None:
return rc.response_error("项目查询错误")
if project_info.project_status == '1':
return rc.response_error("项目当前存在训练进程,请稍后再试")
data, project, name, epochs, yolo_path, version_path = ps.run_train_yolo(project_info, session)
data, project_name, name = ps.run_train_yolo(project_info, session)
return StreamingResponse(
ps.run_commend(data, project, name, epochs, yolo_path, version_path, project_id, session),
ps.run_commend(data, project_name, name, 10, project_id, session),
media_type="text/plain")

View File

@ -1,42 +0,0 @@
import asyncio
import subprocess
from fastapi import APIRouter
from fastapi.responses import StreamingResponse
test = APIRouter()
async def generate_data():
for i in range(1, 10): # 生成 5 行数据
await asyncio.sleep(1) # 等待 1 秒
yield f"data: This is line {i}\n\n" # 返回 SSE 格式的数据
def run_command(command):
"""执行命令并实时打印每一行输出"""
# 启动子进程
with subprocess.Popen(
command,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True, # 确保输出以字符串形式返回而不是字节
bufsize=1, # 行缓冲
) as process:
# 使用iter逐行读取stdout和stderr
for line in process.stdout:
yield f"stdout: {line.strip()} \n"
for line in process.stderr:
yield f"stderr: {line.strip()} \n"
# 等待进程结束并获取返回码
return_code = process.wait()
if return_code != 0:
print(f"Process exited with non-zero code: {return_code}")
@test.get("/stream")
async def stream_response():
return StreamingResponse(run_command(["ping", "-n", "10", "127.0.0.1"]), media_type="text/plain")