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. linux 用户java_linux之用户管理
  2. 将客户端移植到Linux和MAC OS
  3. linux区分用户的权限级别可用,如何限制Linux内核级别的特权用户访问?
  4. 【PAT乙级】1003 我要通过! (20 分)详解
  5. 高效程序员的45个习惯 pdf_高效瑜伽人的 5 个习惯,你get到了几个?
  6. Java Arraylist 如何使用 Comparator排序
  7. ZOJ4116 Game on a Graph
  8. vue中align_Vue的简单Treeview组件,没有额外的依赖——VueTeatree
  9. 怎么使用starwind部署iscsi_服务器配置我该怎么选
  10. python描述性统计工作日上班时代码_基于Python的描述性统计实践
  11. 毕业设计指导教师评语 计算机,毕业设计指导教师评语
  12. 也许你需要看看这篇文章
  13. m基于BP神经网络的障碍物避障和路线规划matlab仿真
  14. 已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值
  15. 【中科三方】高防DNS如何实现对DDoS攻击的流量清洗?
  16. Tomcat详细使用步骤
  17. 2008年4月28日A股市场存在筑底异样
  18. AVPro Video
  19. python 字符串替换_Python中的字符串替换操作示例
  20. TCP/IP网络编程_第6章基于UDP的服务器端/客户端

热门文章

  1. iftop 监控linux服务器网卡流量
  2. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #3 如何编写内核模块
  3. 关于js中的时间——计算时间差等
  4. 初学Golang:web 请求的处理流程
  5. RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分
  6. hdu 1069 Monkey and Banana (LIS)
  7. win10停止更新_新电脑到手第一件事,win10系统刷成win7,为何不直接预装win7?
  8. 自由自在公司冰淇淋甜美的健康文化
  9. 【测试】ABAP直连外部数据库
  10. SAP中用json数据格式调用http接口发送短信邮件案例