Python Requests 抓取失败时的重试设置

6 sec read

最近在抓取数据的时候,经常遇到连接超时的问题,分析原因居然是DNS污染导致的,为了让程序更加稳健,需要对requests请求实现失败重试的逻辑。

先前介绍过,Python中异常重试解决方案。这次搜索发现,Requests本身就支持失败重试的设置。具体设置如下:

python源码重点的实现:

Retry的设计比较简单,在HTTPConnectionPool中根据返回的异常和访问方法,区分是哪种链接失败(connect? read?),然后减少对应的值即可。然后再判断是否所有的操作重试都归零,归零则报MaxRetries异常即可。不过对于每次重试之间的间隔使用了一个简单的backoff算法。

使用重试有几点需要注意:

  • 如果使用get等简单形式,默认会重试3次
  • 重试只有在DNS解析错误、链接错误、链接超时等异常是才重试。在比如读取超时、写超时、HTTP协议错误等不会重试
  • 使用重试会导致返回的错误为MaxRetriesError,而不是确切的异常。
打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

北大开源分词工具pkuseg

pkuseg简介 pkuseg是由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。pkus
1 min read

使用Python进行中文繁简转换

中文繁体、简体的差异,在NPL中类似英文中的大小写,但又比大小写更为复杂,比如同样为繁体字,大陆、香港和台湾又
1 min read

Python因子分解库:fastFM

FastFM简介 FastFM的主要特点是将是将因子分解封装成scikit-learn API接口,核心代码使
2 min read

2 Replies to “Python Requests 抓取失败时的重试设置”

  1. 你这个代码写的,真丑,一点想看的欲望都没有

发表评论

电子邮件地址不会被公开。 必填项已用*标注