Python-requests请求的超时时间
python程序根据url从互联网上批量下载图片时,设置HTTP或Socket超时,来防止爬虫爬取某个页面时间过长,导致程序卡置不前。
一种解决方案是全局设置:
import socket
socket.setdefaulttimeout(t)
t:代表经过t秒后,如果还未下载成功,自动跳入下一次操作,此次下载失败
另外一种解决方案是:
使用timeout 参数可以设定等待连接的秒数,如果等待超时,Requests会抛出异常
>>> requests.get('http://github.com', timeout=0.001)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)
>>> requests.get('https://www.baidu.com',timeout=0.5)
<Response [200]>
timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)。
第三种
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import time
import requests
from requests.adapters import HTTPAdapters = 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秒
第四种:捕获请求异常:
def gethtml(url):i = 0while i < 3:try:html = requests.get(url, timeout=5).textreturn htmlexcept requests.exceptions.RequestException:i += 1
Python-requests请求的超时时间相关推荐
- 设置AFNetworking网络请求的超时时间
设置AFNetworking网络请求的超时时间 也许大家使用的时候已经察觉到,设置AFNetworking的超时时间并不管用,但可以用特殊的方式来处理. 以下是笔者基于AFNetworking2.5. ...
- Python requests请求禁止跳转重定向(判断是否为原请求链接)
python requests请求url,有些网站页面出现:网页不存在(404),301 & 302 跳转的问题,抓取到的页面不是原地址,而是跳转后的页面,通过使用禁止重定向来实现判断. 使用 ...
- python requests请求下载百度网盘文件
python requests请求下载百度网盘文件 注意:这里需要添加网盘账号的cookie值,可以手动登录账号复制cookie(浏览器登录账号后按F12 > 点击Network > 刷新 ...
- python requests请求失败重试_Python:requests:详解超时和重试
网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应. 超时又可分为连接超时和读取超时. 连接超时 连接超时指的是在你的客户端实现到远端机器端口的连接时 ...
- python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间的方法
我们在使用 requests 这类网络请求第三方库时,可以看到它有一个参数叫做 timeout ,就是指在网络请求发出开始计算,如果超过 timeout 还没有收到返回,就抛出超时异常.(当然存在特殊 ...
- python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间
我们在使用 requests 这类网络请求第三方库时,可以看到它有一个参数叫做timeout,就是指在网络请求发出开始计算,如果超过 timeout 还没有收到返回,就抛出超时异常.(当然存在特殊情况 ...
- axios 最全 请求拦截器 响应拦截器 配置公共请求头 超时时间 以及get delete post put 四种请求传参方式
axios 拦截器 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作 例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易 响应拦截器 响应拦截器的作用是在接收到响应后进行一些操 ...
- python timeout_decorator_使用timeout-decorator为python函数任务设置超时时间
需求背景 在python代码的实现中,假如我们有一个需要执行时间跨度非常大的for循环,如果在中间的某处我们需要定时停止这个函数,而不停止整个程序.那么初步的就可以想到两种方案:第一种方案是我们先预估 ...
- httpclient: 设置请求的超时时间,连接超时时间等
1.为什么要设置HTTP timeout? 1.与用户操作相关的接口,如果不设置超时时间,将会出现长时间的无响应,严重影响用户体验. 2.负载很高的系统,因为大量调用耗时长的接口,导致性能急剧下降,从 ...
最新文章
- 可视化深入理解损失函数与梯度下降 | 技术头条
- mysql数据库语句q_mysql数据库命令大全,mysql基本命令大全
- dw html5怎么美化,DW CS5/CS6代码格式化、美化插件 Dreamweaver代码格式化美化插件
- php 有indexof函数吗,详解PHP处理字符串类似indexof的方法函数
- 用html编写一幅简单的画,使用html5画简单的折线图
- Oracle 20c 新特性:DIAGNOSTICS_CONTROL 对诊断事件的安全管控
- 使用Context和Hooks来管理状态
- 用R读取Excel的新方法
- 基于Python的数据分析
- jsp+ssm+mysql实现图书馆预约占座管理系统 代码+数据库脚本+论文+答辩稿+开题报告+任务书
- bp神经网络是前馈网络吗,什么是前馈神经网络
- Mac中brew使用时的报错解决方法集锦
- java ltp4j_ltp工具使用配置
- BIM+GIS技术突破!百公里公路设计数据+TB级地形模型不再是难题!
- docker 安装clickhouse(springboot mybatisplus clickhouse 整合)
- 计算机截图方法,电脑简单又实用的截图方法推荐
- Jenkins流水线打包微服务构建docker镜像运行
- AMD双核所有驱动,补丁,优化下载地址和安装方法
- c++ 实现狼人游戏
- 2017年10月站立会议旁观笔记