You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:16:05