retry装饰器

@retry装饰器requests请求失败并重复请求

在爬虫代码的编写中,requests请求网页的时候常常请求失败或错误,一般的操作是各种判断状态和超时,需要多次重试请求,这种情况下,如果想优雅的实现功能,可以学习下retrying包下的retry装饰器的使用

安装

pip install retrying

参数解释

在@retry()装饰器中,比较重要的几个参数如下:

stop_max_attempt_number:在停止之前尝试的最大次数,最后一次如果还是有异常则会抛出异常,停止运行,默认为5次

wait_random_min:在两次调用方法停留时长,停留最短时间,默认为0,单位毫秒

wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

retry_on_result:指定一个函数,如果指定的函数返回True,则重试,否则抛出异常退出

retry_on_exception: 指定一个函数,如果此函数返回指定异常,则会重试,如果不是指定的异常则会退出

案例

这里只摘录几个常用的方法,想了解其他的方法,请自行查阅

直接上例子:

@retry(stop_max_attempt_number=5)
def requests_(method, *args, **kwargs):
    res = requests.request(method, *args, **kwargs)
    if res.status_code == 200:
        return res
    else:
        print(res)
        raise
posted @ 2020-11-30 17:05  Jeff的技术栈  阅读(230)  评论(0编辑  收藏  举报
回顶部