Python3,关于请求重试,这次requests库给安排的明明白白。

1、引言

小屌丝:鱼哥, 你看这是啥?
小鱼:我瞅瞅…
小屌丝:鱼哥,你这眼神咋了,还戴上眼镜了?
小鱼:我眼神没问题,我就怕你给我看的东西"刺眼",所以就戴上眼镜。
小屌丝:我屮艸芔茻…
在这里插入图片描述

小鱼:我难道说的有错吗?
小屌丝:你… 好吧… 我不会跟你一般见识的,毕竟, 我刚刚冲了黑桃X…。
小鱼:这… 我看看,是什么东西。
小屌丝:你看啥?
小鱼:当然是,你让我看的.
小屌丝:哦 ~ 哦 ~
小鱼:别 哦,哦的,容易引起误会
小屌丝:嗯… 嗯…昂… 是的
小鱼:别说话了,不就是想设置自动重试吗, 我这就帮你搞定。
小屌丝:嗯, 嗯, 好的 。
小鱼:别说话了, 我这就去整。
在这里插入图片描述

2、requests库

关于错误重试, 小鱼在之前的博文中分享过,就是tenacity,如果你不记得,那可以直接点击下面的链接,去回忆回忆。

俗话说:条条大路通罗马今天搞点不一样的。即 requests库的重试功能

2.1 安装

作为第三方库,我们第一步必须安装,

pip install requests

其他方式安装

2.2 代码实例

2.2.1 重试次数设置

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-06-26
# @Author : Carl_DJ

'''
实现功能:
	使用requests库的Retry类,进行设置重试次数
'''

import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

# 设置重试次数
retry_times = 5  

# 设置重试间隔时间
retry_backoff_factor = 2  

session = requests.Session()
retry = Retry(total=retry_times, backoff_factor=retry_backoff_factor)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

#get请求
response = session.get('https://blog.csdn.net/wuyoudeyuer?type=blog')

2.2.2 重试条件设置

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-06-26
# @Author : Carl_DJ

'''
实现功能:
	使用requests库的Retry类,根据status_forcelist 和 method_whitelist 参数,进行设置重试条件
'''

import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

# 设置重试次数
retry_times = 5  

# 设置重试间隔时间
retry_backoff_factor = 2  

session = requests.Session()

#根据状态进行重试 和 请求方式进行重试
retry = Retry(total=retry_times, backoff_factor=retry_backoff_factor, status_forcelist=[500, 502, 503, 504], method_whitelist=["HEAD", "GET", "OPTIONS"])
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

#get请求
response = session.get('https://blog.csdn.net/wuyoudeyuer?type=blog')

2.2.3 超时时间设置

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-06-26
# @Author : Carl_DJ

'''
实现功能:
	使用requests库的Retry类,根据timeout参数,进行设置超时时间
'''

import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

# 设置重试次数
retry_times = 5  

# 设置重试间隔时间
retry_backoff_factor = 2  

# 设置超时时间
timeout = 10 

session = requests.Session()

#根据状态进行重试 和 请求方式进行重试
retry = Retry(total=retry_times, backoff_factor=retry_backoff_factor, status_forcelist=[500, 502, 503, 504], method_whitelist=["HEAD", "GET", "OPTIONS"])
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

#get请求
response = session.get('https://blog.csdn.net/wuyoudeyuer?type=blog')

3、总结

看到这里,今天的分享就完事了。
今天主要针对requests库的 Retry类进行了介绍。

当然,不管是在公司培训,还是在其他课堂培训,我都不止一次的讲过,学习python,除了多练多敲,还需要看一些代码示例, 首推的是 requests库。

声明:
这里也不做唯一限制,如果你觉得其他的库代码写的标准,并且你看的习惯,那都可以看哦。

声明:
这里我只是以requests库为例,并没有说其他库写的没有此库标准的意思。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 51认证讲师等
  • 认证金牌面试官
  • 职场面试及培训规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

我是小鱼,关注我,带你学习更多更专业更前言的测试开发技术。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于 Python 中使用 requests 进行网络请求时,可以通过实现重试机制来处理请求失败的情况。以下是一个简单的实现示例: ```python import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry def requests_retry_session( retries=3, backoff_factor=0.3, status_forcelist=(500, 502, 504), session=None, ): session = session or requests.Session() retry = Retry( total=retries, read=retries, connect=retries, backoff_factor=backoff_factor, status_forcelist=status_forcelist, ) adapter = HTTPAdapter(max_retries=retry) session.mount('http://', adapter) session.mount('https://', adapter) return session # 使用示例 response = requests_retry_session().get('https://www.example.com') print(response.status_code) ``` 上述代码中,我们定义了一个名为 `requests_retry_session` 的函数来创建一个带有重试机制的 requests.Session 对象。在该函数中,我们使用了 `Retry` 类来配置重试策略,其中 `retries` 参数指定了最大重试次数,`backoff_factor` 参数指定了重试之间的延迟时间的乘数因子,`status_forcelist` 参数指定了需要触发重试的状态码列表。 然后,我们创建了一个 `HTTPAdapter` 对象,并将其与 `requests.Session` 对象进行关联,最后通过 `session.get()` 方法来发送请求并获取响应。 这样,在网络请求失败时,会自动进行重试,直到达到最大重试次数或成功获取到响应为止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值