Fix hub AI save: background PM2 restart after JSON response.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-08 23:06:31 +08:00
parent 823aeda42a
commit aaa72c7961
5 changed files with 32 additions and 21 deletions
+6 -12
View File
@@ -110,7 +110,7 @@ from env_load import load_hub_dotenv
load_hub_dotenv()
import httpx
from fastapi import Body, FastAPI, File, Form, HTTPException, Request, UploadFile
from fastapi import BackgroundTasks, Body, FastAPI, File, Form, HTTPException, Request, UploadFile
from fastapi.responses import FileResponse, HTMLResponse, JSONResponse
from fastapi.staticfiles import StaticFiles
from pydantic import BaseModel, Field
@@ -1706,27 +1706,21 @@ def api_get_ai_env(request: Request):
@app.post("/api/settings/ai-env")
def api_save_ai_env(request: Request, body: HubAiEnvBody):
def api_save_ai_env(request: Request, body: HubAiEnvBody, background_tasks: BackgroundTasks):
_require_hub_logged_in(request)
from hub_env_lib import get_hub_ai_env_payload, restart_all_pm2, save_hub_ai_env
result = save_hub_ai_env(body.values or {})
if not result.get("ok"):
raise HTTPException(status_code=400, detail="; ".join(result.get("errors") or ["保存失败"]))
restart_result = None
if body.restart and result.get("restart_required"):
restart_result = restart_all_pm2()
if not restart_result.get("ok"):
raise HTTPException(
status_code=500,
detail="保存成功但 PM2 重启失败,请手动 restart",
)
payload = get_hub_ai_env_payload()
restart_required = bool(body.restart and result.get("restart_required"))
if restart_required:
background_tasks.add_task(restart_all_pm2)
return {
"ok": True,
"changed": result.get("changed") or {},
"restart_required": bool(result.get("restart_required")),
"restart": restart_result,
"restart_required": restart_required,
"sync_status": payload.get("sync_status"),
}