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请求的超时时间相关推荐

  1. 设置AFNetworking网络请求的超时时间

    设置AFNetworking网络请求的超时时间 也许大家使用的时候已经察觉到,设置AFNetworking的超时时间并不管用,但可以用特殊的方式来处理. 以下是笔者基于AFNetworking2.5. ...

  2. Python requests请求禁止跳转重定向(判断是否为原请求链接)

    python requests请求url,有些网站页面出现:网页不存在(404),301 & 302 跳转的问题,抓取到的页面不是原地址,而是跳转后的页面,通过使用禁止重定向来实现判断. 使用 ...

  3. python requests请求下载百度网盘文件

    python requests请求下载百度网盘文件 注意:这里需要添加网盘账号的cookie值,可以手动登录账号复制cookie(浏览器登录账号后按F12 > 点击Network > 刷新 ...

  4. python requests请求失败重试_Python:requests:详解超时和重试

    网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应. 超时又可分为连接超时和读取超时. 连接超时 连接超时指的是在你的客户端实现到远端机器端口的连接时 ...

  5. python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间的方法

    我们在使用 requests 这类网络请求第三方库时,可以看到它有一个参数叫做 timeout ,就是指在网络请求发出开始计算,如果超过 timeout 还没有收到返回,就抛出超时异常.(当然存在特殊 ...

  6. python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间

    我们在使用 requests 这类网络请求第三方库时,可以看到它有一个参数叫做timeout,就是指在网络请求发出开始计算,如果超过 timeout 还没有收到返回,就抛出超时异常.(当然存在特殊情况 ...

  7. axios 最全 请求拦截器 响应拦截器 配置公共请求头 超时时间 以及get delete post put 四种请求传参方式

    axios 拦截器 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作 例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易 响应拦截器 响应拦截器的作用是在接收到响应后进行一些操 ...

  8. python timeout_decorator_使用timeout-decorator为python函数任务设置超时时间

    需求背景 在python代码的实现中,假如我们有一个需要执行时间跨度非常大的for循环,如果在中间的某处我们需要定时停止这个函数,而不停止整个程序.那么初步的就可以想到两种方案:第一种方案是我们先预估 ...

  9. httpclient: 设置请求的超时时间,连接超时时间等

    1.为什么要设置HTTP timeout? 1.与用户操作相关的接口,如果不设置超时时间,将会出现长时间的无响应,严重影响用户体验. 2.负载很高的系统,因为大量调用耗时长的接口,导致性能急剧下降,从 ...

最新文章

  1. 可视化深入理解损失函数与梯度下降 | 技术头条
  2. mysql数据库语句q_mysql数据库命令大全,mysql基本命令大全
  3. dw html5怎么美化,DW CS5/CS6代码格式化、美化插件 Dreamweaver代码格式化美化插件
  4. php 有indexof函数吗,详解PHP处理字符串类似indexof的方法函数
  5. 用html编写一幅简单的画,使用html5画简单的折线图
  6. Oracle 20c 新特性:DIAGNOSTICS_CONTROL 对诊断事件的安全管控
  7. 使用Context和Hooks来管理状态
  8. 用R读取Excel的新方法
  9. 基于Python的数据分析
  10. jsp+ssm+mysql实现图书馆预约占座管理系统 代码+数据库脚本+论文+答辩稿+开题报告+任务书
  11. bp神经网络是前馈网络吗,什么是前馈神经网络
  12. Mac中brew使用时的报错解决方法集锦
  13. java ltp4j_ltp工具使用配置
  14. BIM+GIS技术突破!百公里公路设计数据+TB级地形模型不再是难题!
  15. docker 安装clickhouse(springboot mybatisplus clickhouse 整合)
  16. 计算机截图方法,电脑简单又实用的截图方法推荐
  17. Jenkins流水线打包微服务构建docker镜像运行
  18. AMD双核所有驱动,补丁,优化下载地址和安装方法
  19. c++ 实现狼人游戏
  20. 2017年10月站立会议旁观笔记

热门文章

  1. Debian Linux下的Python学习——函数
  2. metasploit篇-01
  3. 蓝懿教育九月八日记录
  4. C#操作Excel(搜集)
  5. 如何用SQL语句实现精确搜索以及模糊搜索
  6. linux怎么挂载第二块硬盘分区,linux下挂载第二块已有linux分区的硬盘,要读取从硬盘的文件,应该怎么打开第二块硬盘?...
  7. js 两行之间的设置间距_厂房仓库的防火间距考点汇总
  8. webstorm安装_WebStorm2019安装教程
  9. 解读MD07中可供货天数的计算
  10. ABAP销售合同冻结Bapi