请求为Python SSH主机连通性检测代码添加3次重试逻辑
带重试逻辑的SSH主机在线检测代码
这里是修改后的代码,加入了3次重试逻辑,同时处理检测过程中可能出现的异常:
MAX_RETRIES = 3 for hostname, ipaddr in host_dict.items(): is_up = False retry_count = 0 while retry_count < MAX_RETRIES: try: # 尝试检测端口是否开放 if tcp_conn.tcp_port_is_open(ipaddr, constants.TCP_PORT, constants.TCP_TIMEOUT): is_up = True break else: print(f"[{hostname}] 检测失败,正在重试 ({retry_count+1}/{MAX_RETRIES})") retry_count += 1 except Exception as e: # 捕获检测过程中的异常,比如网络错误 print(f"[{hostname}] 检测出现异常: {str(e)},正在重试 ({retry_count+1}/{MAX_RETRIES})") retry_count += 1 if is_up: print(f"[{hostname}] Host is Up") else: print(f"[{hostname}] Host is Down")
关键改动说明:
- 定义
MAX_RETRIES常量,统一控制重试次数,方便后续调整 - 对每个主机初始化状态标记和重试计数器
- 使用
while循环实现重试逻辑,只要未达到最大次数且未检测成功就继续尝试 - 加入
try-except块捕获异常,避免单次检测的异常直接中断整个重试流程 - 每次重试时输出提示信息,明确当前重试进度
- 最终根据所有重试后的结果输出主机状态,避免单次失败就判定离线
内容的提问来源于stack exchange,提问作者Saurav K
相关产品推荐
相关产品推荐

