参考代码
#!/usr/local/python3/bin/python3 # -*- coding: utf-8 -* import time import random from functools import wraps def retry_on_failure(max_retries=3, delay=1, allowed_exceptions=()): """ 函数调用出错重试装饰器 参数: max_retries (int): 最大重试次数,默认为3 delay (int): 每次重试之间的延迟时间(秒),默认为1 allowed_exceptions (tuple): 允许重试的异常类型,默认为空(所有异常都重试) """ def decorator(func): @wraps(func) def wrapper(*args, **kwargs): retries = 0 last_exception = None while retries < max_retries: try: return func(*args, **kwargs) except allowed_exceptions if allowed_exceptions else Exception as e: last_exception = e retries += 1 if retries < max_retries: print(f"调用 {func.__name__} 失败,第 {retries} 次重试... (错误: {str(e)})") time.sleep(delay) print(f"函数 {func.__name__} 在 {max_retries} 次尝试后仍然失败") raise last_exception return wrapper return decorator # 示例使用 @retry_on_failure(max_retries=3, delay=1, allowed_exceptions=(ValueError, RuntimeError)) def unreliable_function(x): """一个可能失败的示例函数""" if random.random() < 0.7: # 70%的概率失败 raise ValueError("随机失败: 数值错误") return x * 2 # 测试代码 if __name__ == "__main__": try: result = unreliable_function(5) print(f"调用成功,结果: {result}") except Exception as e: print(f"最终失败: {str(e)}")
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?