如何为Python3不稳定远程驱动器写入实现异常重试机制
带网络重试逻辑的日志写入函数
以下是修改后的完整代码,实现最多3次重试、每次间隔3秒的逻辑,遇到网络断开引发的PermissionError时自动重试,最终失败则优雅报错:
import os import time def log(log_file, txt): """将输入文本写入日志文件""" max_retries = 3 retry_delay = 3 # 重试间隔(秒) for attempt in range(max_retries): try: with open(log_file, "a") as out_file: out_file.write(txt) return # 写入成功,直接退出函数 except PermissionError: if attempt < max_retries - 1: # 还有重试机会,提示后等待 print(f'WARNING: 可能存在网络连接问题,{retry_delay}秒后重试(第{attempt+2}/{max_retries}次尝试)') time.sleep(retry_delay) else: # 所有重试都失败,输出最终错误 print(f'ERROR: 网络问题重试{max_retries}次后仍失败,无法写入日志文件 {log_file}') except FileNotFoundError: # 日志文件不存在,直接报错退出 print(f'ERROR: 日志函数未找到文件 {log_file}') return
关键逻辑说明
- 重试控制:通过
for循环遍历3次尝试机会,每次触发网络权限错误后,判断是否还有剩余重试次数,有则等待3秒后继续尝试 - 成功终止:只要某次写入成功,立即
return结束函数,避免不必要的重试 - 错误处理:
- 专门捕获
PermissionError处理网络挂载断开的场景 - 保留原逻辑中对
FileNotFoundError的捕获,处理日志文件不存在的情况 - 最后一次重试失败时输出明确错误信息,不会导致程序直接崩溃
- 专门捕获
内容的提问来源于stack exchange,提问作者Jon Bonk
相关产品推荐
相关产品推荐

