1.2 KiB
1.2 KiB
健康检查写入 Redis 心跳
日期:2026-06-21
变更摘要
批量「健康检查」在 SSH 探测后,将结果写入 heartbeat:{server_id}(与 Agent 心跳同结构),列表/宝塔模块可立即反映在线状态;任务结果 stdout 附带心跳时间。
动机
健康检查仅返回成功/失败,不更新 Redis,导致 #/servers 状态列与宝塔列表仍显示旧心跳或 unknown。
涉及文件
server/application/server_connectivity.py—write_ssh_health_heartbeat、normalize_ssh_probe_system_infoserver/application/services/server_batch_service.py—_run_health_check写心跳server/application/services/server_service.py—check_all_servers同步写心跳server/api/servers.py—has_heartbeat时无 Agent 也显示 offline/onlinetests/test_server_connectivity.py、tests/test_server_status_field.py
迁移 / 重启
需重启 API worker(后端部署)。
验证方式
.venv/bin/pytest tests/test_server_connectivity.py tests/test_server_status_field.py -q
生产:对离线机执行健康检查后刷新 #/servers,状态列应更新;批量任务详情 stdout 含「心跳 2026-…」。