Files
Nexus/docs/changelog/2026-06-08-server-batch-background-jobs.md
T
2026-07-08 22:31:31 +08:00

2.6 KiB
Raw Blame History

2026-06-08 — 服务器批量任务后台执行(对齐脚本库)

摘要

服务器页的「修改分类、健康检查、检测目标路径、安装/升级/卸载 Agent」改为后台队列执行:点击后立即返回,顶栏显示进度条,完成后弹出结果摘要,与脚本库一致。

动机

批量 SSH 操作耗时长,原先前端阻塞等待 HTTP 响应,对话框一直 loading,无法继续操作其他功能。

涉及文件

后端

  • server/application/server_batch_common.py — 批量 SSH 共用 helper
  • server/infrastructure/redis/server_batch_store.py — Redis 任务状态(2h TTL
  • server/application/services/server_batch_service.py — 后台 runner + WebSocket 进度
  • server/api/servers.py — 批量端点返回 BatchJobStarted;新增 GET /batch/jobs/{id}
  • server/api/schemas.pyBatchJobStarted / BatchJobStatus

前端(本次补充)

  • BatchAgentResultDialog 不再 persistent;loading 文案改为「正在加载结果…」(仅查看详情时拉取结果,不再表示阻塞执行)
  • 顶栏进度条:服务器批量任务可点击查看进行中/已完成结果
  • submitServerBatchJob 若 API 未返回 job_id(旧版同步接口)则明确报错

与脚本库对齐的行为

操作 点击后
修改分类 / 健康检查 / 检测路径 / 安装·升级·卸载 Agent 立即 toast「已提交」+ 顶栏进度条,不弹等待框
执行结束 顶栏通知 +「查看详情」打开结果列表
脚本库执行 同上(已有)

未发现其他页面仍使用 BatchAgentResultDialog 阻塞等待;仅 App.vue 在「查看详情」时打开该对话框。

迁移 / 重启

  • 无需 DB 迁移
  • 需重启 API 并部署前端

验证

bash scripts/local_verify.sh
cd frontend && npm run build
# 服务器页勾选子机 → 安装/升级/卸载 Agent → 应立即 toast + 顶栏进度 → 完成后可查看详情

生产部署(2026-06-08

热更新至 nexus-prod-nexus-1docker cp + docker restart):

  • 前端:index-D4DsercP.js / ServersPage-Cj6_30Tm.js(含 upgrade-agent / uninstall-agent 后台提交,无 runBatchAgentOp
  • 后端:server_batch_service.py 等批量任务模块
  • web/agent/install.sh(宝塔 Python / 并行安装 3.12

验证:

  • GET https://api.synaglobal.vip/healthok
  • GET /app/index.html → 新 bundle 哈希
  • GET /api/servers/batch/jobs/{id} → 401(端点存在,需登录)

请强刷浏览器缓存(Ctrl+Shift+R)后再试批量升级/卸载 Agent。