python安装requests库超时_【Python 库】requests 详解超时和重试

网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应。

超时又可分为连接超时和读取超时。

连接超时

连接超时指的是在你的客户端实现到远端机器端口的连接时(对应的是connect()),Request 等待的秒数。

import time

import requests

url = 'http://www.google.com.hk'

print(time.strftime('%Y-%m-%d %H:%M:%S'))

try:

html = requests.get(url, timeout=5).text

print('success')

except requests.exceptions.RequestException as e:

print(e)

print(time.strftime('%Y-%m-%d %H:%M:%S'))

因为 google 被墙了,所以无法连接,错误信息显示 connect timeout(连接超时)。

2018-12-14 14:38:20

HTTPConnectionPool(host='www.google.com.hk', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(, 'Connection to www.google.com.hk timed out. (connect timeout=5)'))

2018-12-14 14:38:25

就算不设置,也会有一个默认的连接超时时间(我测试了下,大概是21秒)。

读取超时

读取超时指的就是客户端等待服务器发送请求的时间。(特定地,它指的是客户端要等待服务器发送字节之间的时间。在 99.9% 的情况下这指的是服务器发送第一个字节之前的时间)。

简单的说,连接超时就是发起请求连接到连接建立之间的最大时长,读取超时就是连接成功开始到服务器返回响应之间等待的最大时长。

如果你设置了一个单一的值作为 timeout,如下所示:

r = requests.get('https://github.com', timeout=5)

这一 timeout 值将会用作 connect 和 read 二者的 timeout。如果要分别制定,就传入一个元组:

r = requests.get('https://github.com', timeout=(3.05, 27))

黑板课爬虫闯关的第四关正好网站人为设置了一个15秒的响应等待时间,拿来做说明最好不过了。

import time

import requests

url_login = 'http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex03/'

session = requests.Session()

session.get(url_login)

token = session.cookies['csrftoken']

session.post(url_login, data={'csrfmiddlewaretoken': token, 'username': 'xx', 'password': 'xx'})

print(time.strftime('%Y-%m-%d %H:%M:%S'))

url_pw = 'http://www.heibanke.com/lesson/crawler_ex03/pw_list/'

try:

html = session.get(url_pw, timeout=(5, 10)).text

print('success')

except requests.exceptions.RequestException as e:

print(e)

print(time.strftime('%Y-%m-%d %H:%M:%S'))

错误信息中显示的是 read timeout(读取超时)。

2018-12-14 15:20:47

HTTPConnectionPool(host='www.heibanke.com', port=80): Read timed out. (read timeout=10)

2018-12-14 15:20:57

读取超时是没有默认值的,如果不设置,程序将一直处于等待状态。我们的爬虫经常卡死又没有任何的报错信息,原因就在这里了。

超时重试

一般超时我们不会立即返回,而会设置一个三次重连的机制。

def gethtml(url):

i = 0

while i < 3:

try:

html = requests.get(url, timeout=5).text

return html

except requests.exceptions.RequestException:

i += 1

其实 requests 已经帮我们封装好了。(但是代码好像变多了...)

import time

import requests

from requests.adapters import HTTPAdapter

s = requests.Session()

s.mount('http://', HTTPAdapter(max_retries=3))

s.mount('https://', HTTPAdapter(max_retries=3))

print(time.strftime('%Y-%m-%d %H:%M:%S'))

try:

r = s.get('http://www.google.com.hk', timeout=5)

return r.text

except requests.exceptions.RequestException as e:

print(e)

print(time.strftime('%Y-%m-%d %H:%M:%S'))

max_retries 为最大重试次数,重试3次,加上最初的一次请求,一共是4次,所以上述代码运行耗时是20秒而不是15秒

2018-12-14 15:34:03

HTTPConnectionPool(host='www.google.com.hk', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(, 'Connection to www.google.com.hk timed out. (connect timeout=5)'))

2018-12-14 15:34:23

相关博文推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IT信息业、金融业从业人员悲歌

在台湾&#xff0c;不论是金融从业人员、IT 软件业、硬件业、电子代工业&#xff0c;工程师、技术人员的工作压力都颇大。要终其一生不断学习、为公司卖命。不同的是&#xff0c;在台湾的电子、光电、晶圆大厂&#xff0c;若你身为电子、电机、硬件、Firmware、Driver 撰码工程…

程序员面试金典 - 面试题 17.26. 稀疏相似度(哈希map)

1. 题目 两个(具有不同单词的)文档的交集(intersection)中元素的个数除以并集(union)中元素的个数&#xff0c;就是这两个文档的相似度。 例如&#xff0c;{1, 5, 3} 和 {1, 7, 2, 3} 的相似度是 0.4&#xff0c;其中&#xff0c;交集的元素有 2 个&#xff0c;并集的元素有 …

i2c通信的详细讲解_【博文连载】SCCB(I2C)初始化时序介绍

在正式开始OV7725视频采集实现之前&#xff0c;Bingo不得不先讲解一下OV7725的寄存器配置接口。OV7725上电会默认输出YUV422格式的视频流&#xff0c;但我们希望传感器能够按照我们预期的模式工作&#xff0c;我们需要配置分辨率&#xff0c;配置内部时钟&#xff0c;配置亮度、…

何可欣(为奥运冠军名字作诗)

何可欣&#xff08;为奥运冠军名字作诗&#xff09;——代腾飞 2008年8月18日 于成都何妹归来喜外望可儿杠上敢称王欣然前往杠上翻摘得皇冠美名扬转载于:https://www.cnblogs.com/daitengfei/archive/2008/08/25/1276011.html

LeetCode 647. 回文子串(DP/中心扩展)

文章目录1. 题目2. 解题2.1 动态规划2.2 中心扩展法1. 题目 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被计为是不同的子串。 示例 1: 输入: "abc…

当我问了ChatGPT 10个程序员最关心的问题,没想到…

源&#xff5c;AfterShip近期 OpenAI 火爆了科技圈。作为一家极客氛围浓厚&#xff0c;60% 都是产研的科技公司&#xff0c;AfterShip 的很多同学也都留意到了这个工具。因此&#xff0c;我们面向工程师征集共创&#xff0c;并筛选出了程序员最关心的十个问题。并将这些问题询问…

ipv6 访问内网_【内网渗透】—— 隐藏通信隧道技术之网络层隧道技术

hidden&#xff1a;是否完全隐藏控制面板&#xff0c;还有很多设置参数&#xff0c;比如也可以设置显示面板&#xff0c;然后设置宽高WIDTH“整数” 和 HIGH“整数”。1. 隐藏通信隧道基础1.1隐藏通信隧道技术概述常用的隧道&#xff1a;网络层&#xff1a;IPv6隧道&#xff0c…

心潮澎湃之胡言乱语

做了很长时间的思想斗争之后决定还是写下这篇文章&#xff0c;从毕业到现在两个月了&#xff0c;明天我将离开了工作两个月的公司&#xff0c;上帝再一次次的考验我然后又再一次次的给我机会&#xff0c;挫折的背后感触更多是我是上帝的宠儿&#xff0c;所以越到挫折时自我陶醉…

LeetCode 1277. 统计全为 1 的正方形子矩阵(DP)

1. 题目 给你一个 m * n 的矩阵&#xff0c;矩阵中的元素不是 0 就是 1&#xff0c;请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。 示例 1&#xff1a; 输入&#xff1a;matrix [[0,1,1,1],[1,1,1,1],[0,1,1,1] ] 输出&#xff1a;15 解释&#xff1a; 边长为 …

抱抱脸:ChatGPT背后的算法——RLHF | 附12篇RLHF必刷论文

文 | 卖萌酱大家好&#xff0c;我是卖萌酱。前几天&#xff0c;抱抱脸公司&#xff08;HuggingFace&#xff09;发表了一篇博客[1]&#xff0c;详细讲解了ChatGPT背后的技术原理——RLHF。笔者读过之后&#xff0c;觉得讲解的还是蛮清晰的&#xff0c;因此提炼了一下核心脉络&a…

该文件夹包含名称过长且无法放入回收站的项目_微软复活20年前生产力工具PowerToys,填补Win10缺失功能,开源且免费...

贾浩楠 发自 凹非寺量子位 报道 | 公众号 QbitAI微软PowerToys&#xff1f;如果你是 Win95、XP时代的老用户&#xff0c;可能对这个微软个官方工具集很熟悉。它包含了很多实用的系统功能增强小软件&#xff0c;如TweakUI、虚拟桌面工具等等&#xff0c;但微软在XP之后就不再更新…

SQL Server中常用全局变量介绍

在SQL Server中&#xff0c;全局变量是一种特殊类型的变量,服务器将维护这些变量的值。全局变量以前缀开头,不必进行声明,它们属于系统定义的函数。下表就是SQL Server中一些常用的全局变量。    全局变量名称 描述 CONNECTIONS 返回 SQL Server 自上次启动以来尝试的连接…

ChatGPT终于被缝进了搜索引擎…

文&#xff5c;Alex Pine 发自 凹非寺源&#xff5c;量子位见惯了列表式搜索引擎&#xff0c;你有没有想过给它换种画风&#xff1f;有人脑洞大开&#xff0c;把艳惊四座的ChatGPT和必应搜索结合起来&#xff0c;搞出了一个智能搜索引擎&#xff1a;既有ChatGPT式的问答&#x…

LeetCode 1310. 子数组异或查询(前缀异或)

1. 题目 有一个正整数数组 arr&#xff0c;现给你一个对应的查询数组 queries&#xff0c;其中 queries[i] [Li, Ri]。 对于每个查询 i&#xff0c;请你计算从 Li 到 Ri 的 XOR 值&#xff08;即 arr[Li] xor arr[Li1] xor … xor arr[Ri]&#xff09;作为本次查询的结果。 …

python编程书籍1020python编程书籍_从零单排之玩转Python安全编程(II)

转自&#xff1a;http://www.secpulse.com/archives/35893.html都说Python大法好&#xff0c;作为一名合格的安全从业人员&#xff0c;不会几门脚本语言都不好意思说自己是从事安全行业的。而Python是最容易入门且使用最顺手的脚本语言&#xff0c;为了不引起程序员世界大战&am…

[导入][转]sap学习手册二

SAP学习手册二 作者&#xff1a;sunxufeng 有没有调整IDES4.6的中文包参数的步骤呢? 在导入中文包后直接手工修改有关参数,不要用CZ10去修改假定为D盘,路径为D:usrsapC11sysprofileC11_DVEBMGS00_cpa (后面CPA为我的计算机名),用NOTEPAD手动编辑该文件 SAPSYSTEMNAME C11 INS…

近几年车道线检测领域的SOTA论文复现代码数据集

自动驾驶近些年来大火。有读者朋友给我留言说想做自动驾驶&#xff0c;但是不知道怎么切入。今天就给大家分享一个好出文章的自动驾驶研究方向——车道线检测。车道线检测就是将计算机视觉应用到自动驾驶或辅助驾驶&#xff0c;本质上还是目标检测问题。但车道线检测又不同于目…

python多元线性回归实例_利用Python进行数据分析之多元线性回归案例

线性回归模型属于经典的统计学模型&#xff0c;该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量)。例如&#xff0c;餐厅根据每天的营业数据(包括菜谱价格、就餐人数、预定人数、特价菜折扣等)预测就餐规模或营业额&#xff1b;网站根据访问的历史数…

NTLM

NTLM HTTP认证 过程如下&#xff1a; 1: C --> S GET ... 2: C <-- S 401 Unauthorized WW-Authenticate: NTLM 3: C --> S GET ... Authorization: NTLM <base64-encoded type-1-message> 4: C <-- S 401 Unauthorized WWW-Authenticate: NTLM …

ChatGPT和DALLE-2级联后,输出效果震撼了…

源&#xff5c;机器之心 文&#xff5c;张倩、袁铭怿生成式 AI 正在变革内容的生产方式。在过去的一周&#xff0c;相信大家都被 ChatGPT 刷了屏。这个强大的对话 AI 仅用 5 天时间用户量就突破了 100 万。大家用各种方式测试着它的能力上限&#xff0c;其中一种测试方式就是让…