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.负载很高的系统,因为大量调用耗时长的接口,导致性能急剧下降,从 ...
最新文章
- linux 用户java_linux之用户管理
- 将客户端移植到Linux和MAC OS
- linux区分用户的权限级别可用,如何限制Linux内核级别的特权用户访问?
- 【PAT乙级】1003 我要通过! (20 分)详解
- 高效程序员的45个习惯 pdf_高效瑜伽人的 5 个习惯,你get到了几个?
- Java Arraylist 如何使用 Comparator排序
- ZOJ4116 Game on a Graph
- vue中align_Vue的简单Treeview组件,没有额外的依赖——VueTeatree
- 怎么使用starwind部署iscsi_服务器配置我该怎么选
- python描述性统计工作日上班时代码_基于Python的描述性统计实践
- 毕业设计指导教师评语 计算机,毕业设计指导教师评语
- 也许你需要看看这篇文章
- m基于BP神经网络的障碍物避障和路线规划matlab仿真
- 已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值
- 【中科三方】高防DNS如何实现对DDoS攻击的流量清洗?
- Tomcat详细使用步骤
- 2008年4月28日A股市场存在筑底异样
- AVPro Video
- python 字符串替换_Python中的字符串替换操作示例
- TCP/IP网络编程_第6章基于UDP的服务器端/客户端
热门文章
- iftop 监控linux服务器网卡流量
- 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #3 如何编写内核模块
- 关于js中的时间——计算时间差等
- 初学Golang:web 请求的处理流程
- RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分
- hdu 1069 Monkey and Banana (LIS)
- win10停止更新_新电脑到手第一件事,win10系统刷成win7,为何不直接预装win7?
- 自由自在公司冰淇淋甜美的健康文化
- 【测试】ABAP直连外部数据库
- SAP中用json数据格式调用http接口发送短信邮件案例