menu Chancel's blog
rss_feed
Chancel's blog
有善始者实繁,能克终者盖寡。

Python的重试机制库Retrying

作者:Chancel Yang, 创建:2023-11-15, 字数:1066, 已阅:304, 最后更新:2023-11-15

这篇文章更新于 167 天前,文中部分信息可能失效,请自行甄别无效内容。

Retrying是一个以Apache 2.0许可证发布的通用重试库,用Python编写,旨在简化为任何事物添加重试行为的任务

安装如下

Bash
pip install retrying

以下是一个使用retryingretry模块的简单示例:

Python
from retrying import retry

# 定义一个需要重试的函数
@retry
def fetch_data(url):
    # 假设这里是一个可能出现网络错误的操作
    response = requests.get(url)
    return response.text

# 调用函数,并自动进行重试
data = fetch_data("https://example.com")
print(data)

在上述示例中,fetch_data 函数使用了 @retry 装饰器,当 requests.get(url) 发生网络错误时,retry 模块将自动重试该操作,直到达到默认的最大重试次数(默认为3次)

通过使用retry模块可以更方便地处理可能出现错误的函数,并在需要时进行灵活的重试操作,以增加程序的稳定性和容错性,同时也提供了十分丰富的错误重试设定

Python
@retry(stop_max_attempt_number=5) # 设置重试次数为5次
def fetch_data(url):
    ...

@retry(wait_fixed=2000)  # 2秒后进行下一次重试
def fetch_data(url):
    ...

@retry(stop_max_attempt_number=3, retry_on_result=lambda result: result is None) # 设定负责的重试条件
def fetch_data(url):
    ...

@retry(stop_max_attempt_number=3, retry_on_exception=IOError) # 捕获特定的异常进行重试
def fetch_data(url):
    ...

这只是 retrying 模块的一小部分用法示例,还有更多选项和配置可以根据具体需求进行使用,更多用法可以参考官方文档

  • retrying:https://github.com/rholder/retrying

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]