安装模块
pip install retrying
retry 参数定义
- stop_max_attempt_number
在停止之前尝试的最大次数,最后一次如果还是有异常就会抛出异常,停止运行,默认是五次(强调总次数) - stop_max_delay
最大延迟时间,大概的意思就是:如果调用的函数抛出异常了,那么就会重复调用这个函数,最大调用时间,默认100毫秒 - wait_random_min
在两次调用方法停留时长,停留最短的时间,默认是0 - wait_random_max
在两次调用方法停留时长,停留最长时间,默认是1000毫秒 - wait_incrementing_increment
每调用一次就会增加的时长,默认是100毫秒 - retry_on_result
指定一个函数,如果指定的函数返回True,就重试,否则抛出异常退出
用法
@retry(stop_max_attempt_number=3, wait_random_min=1000, wait_random_max=5000)
def request(url)
print('start: %s' % datetime.now())
response = requests.get(url, timeout=5)
if response.status_code != 200:
raise Exception('unexpected status_code : %s !' % response.status_code)
return response.text
def get_one_page(url):
try:
return request(url)
except Exception as e:
logger.error(f'{url}\n{e}')
def retry_if_result_none(result):
return result is None
@retry(stop_max_delay=1000, retry_on_result=retry_if_result_none)
def run():
print('start %s' % datetime.now())
return