00
前言
在爬虫过程中,经常会由于一些网络或其他不可控因素,从而遇到一些功能性问题。比如在发送请求时,会因为网络不稳定,往往会有请求超时的问题。这种情况下,我们通常会在代码中加入重试的代码。重试的代码本身不难实现,但如何写得优雅、易用,是我们要考虑的问题。
Tenacity是一个通用的retry库,简化为任何任务加入重试的功能,它实现了几乎我们可以使用到的所有重试场景。先pip为敬:
pip install tenacity
不懂这个库怎么用, 很简单,哦对了,可能还需要你知道装饰器就是那个@啦就够了,上菜!
01
无条件重试,重试之间无间隔
import tenacityimport requests# 直接加上retry装饰器,代码抛出异常会一直重试,直到代码运行成功@tenacity.retry()def baidu():response = requests.get(url = 'http://www.baidu.com')if response.status_code == 200:return response.textraise Exceptionres = baidu()print(res)
这里呢,我们使用requests请求了百度,并输出response,在code=200的位置上,如果code不等于200,这个程序就会被retry重试。理就是这么个理,够不够优雅?
无条件重试,但是在重试之前要等待 3秒:
from tenac

本文介绍了Python的Tenacity库,用于在爬虫或其他任务中优雅地实现重试机制。通过实例展示了如何设置重试次数、停止条件、重试间隔以及结合日志功能,帮助解决因网络等问题导致的请求失败。
最低0.47元/天 解锁文章

663

被折叠的 条评论
为什么被折叠?



