重试/retrying/retry/重试控制机制
retrying
是一个 Python 包,用于提供一个装饰器(以及一个重试控制机制),允许你将其应用于任何函数或方法上,使得在遇到特定的异常或者返回条件不满足时自动重试。使用 retrying
包中的 retry
函数可以帮助简化代码中处理瞬时错误或不稳定操作(如网络请求)的逻辑。
当你使用 @retry
装饰器装饰一个函数时,可以指定多个参数来控制重试行为,包括:
stop_max_attempt_number
: 重试的最大次数。stop_max_delay
: 最大的重试延迟时间(毫秒),超过这个时间后不再重试。wait_fixed
: 两次重试之间的固定等待时间(毫秒)。wait_random_min
和wait_random_max
: 两次重试之间的随机等待时间的最小值和最大值(毫秒)。retry_on_exception
: 一个函数,当它返回True
时,会在抛出的异常上重试。retry_on_result
: 一个函数,当目标函数返回值使得该函数返回True
时进行重试。
例如,假设你有一个网络请求的函数,由于网络波动,你希望在遇到连接错误时自动重试,但最多重试3次,每次重试之间等待2秒:
from retrying import retry
import requests
@retry(stop_max_attempt_number=3, wait_fixed=2000)
def fetch_data(url):
response = requests.get(url)
response.raise_for_status() # 如果响应码不是 200,会抛出异常
return response.json()
# 使用这个函数,它会在失败时尝试最多3次,每次尝试之间等待2秒
data = fetch_data("https://example.com/api/data")
在这个例子中,如果 requests.get(url)
因为网络问题抛出异常(比如 requests.exceptions.ConnectionError
),fetch_data
函数会自动重试,直到尝试了3次或者成功获取数据为止。
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18090562