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

举报
Carl_奕然 发表于 2023/07/05 15:23:51 2023/07/05
729 0 0
【摘要】 网友:requests库,就是牛。

1、引言


小云:鱼哥, 你看这是啥?
小鱼:我瞅瞅…
小云:鱼哥,你这眼神咋了,还戴上眼镜了?
小鱼:我眼神没问题,我就怕你给我看的东西"刺眼",所以就戴上眼镜。
小云:我屮艸芔茻…

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

在这里插入图片描述
2、requests库


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

  • 《Python3,它,会魔法吧,来自最强大的错误重试库。》


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

2.1 安装


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

pip install requests



其他方式安装:

  • 《Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!》
  • 《Python3:我低调的只用一行代码,就导入Python所有库!!》


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认证讲师;
  • 认证金牌面试官;
  • 职场培训规划师;
  • 多个国内主流技术社区的认证专家博主;
  • 多款主流产品(阿里云等)测评一、二等奖获得者;


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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。