Fix hub AI save: background PM2 restart after JSON response.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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"),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user