Kaynağa Gözat

调通版本

xujunwei 6 ay önce
ebeveyn
işleme
0cba831d90
1 değiştirilmiş dosya ile 20 ekleme ve 7 silme
  1. 20 7
      app.py

+ 20 - 7
app.py

@@ -12,6 +12,10 @@ from fastapi import FastAPI
 from pydantic import BaseModel
 import uvicorn
 import logging
+from fastapi.responses import JSONResponse
+from fastapi.exception_handlers import RequestValidationError
+from fastapi.exceptions import RequestValidationError
+from fastapi import status
 
 # 设置日志格式和级别
 logging.basicConfig(level=logging.INFO, format='[%(asctime)s] %(levelname)s - %(message)s')
@@ -219,16 +223,11 @@ def yolov12_train(params: TrainParams):
             exist_ok=params.exist_ok,
         )
         logging.info("模型训练完成")
-        logging.info(f"训练结果: save_dir={results.save_dir}, metrics={results.metrics}, epoch={results.epoch}, best_fitness={getattr(results, 'best_fitness', None)}")
+        # logging.info(f"训练结果: {str(results)}")
         return {
             "code": 0,
             "msg": "success",
-            "result": {
-                "save_dir": str(results.save_dir),
-                "metrics": str(results.metrics),
-                "epoch": results.epoch,
-                "best_fitness": getattr(results, "best_fitness", None)
-            }
+            "result": str(results.save_dir)
         }
     except Exception as e:
         logging.error(f"训练过程发生异常: {e}")
@@ -238,6 +237,20 @@ def yolov12_train(params: TrainParams):
             "result": None
         }
 
+# 全局异常处理器:参数校验失败时统一返回格式
+@app_fastapi.exception_handler(RequestValidationError)
+async def validation_exception_handler(request, exc):
+    err_msg = f"参数校验失败: 路径={request.url.path}, 错误={exc.errors()}"
+    logging.error(err_msg)
+    return JSONResponse(
+        status_code=status.HTTP_200_OK,
+        content={
+            "code": 422,
+            "msg": err_msg,
+            "result": None
+        }
+    )
+
 if __name__ == "__main__":
     threading.Thread(target=start_gradio, daemon=True).start()
     uvicorn.run(app_fastapi, host="0.0.0.0", port=8000)