python requests timeout参数

首先发一下牢骚: 不管是抄袭还是转载,有点新东西行不行,一味的转载有什么用呢?东西还以那点东西,让想解决问题的人查看一些一摸一样的文章,只会浪费查询者的时间。况且! 有些问题原创者并没有进行彻底的解答,就一个劲的转载,抄袭,一连几个都是一摸一样的文章,浪费时间。(百度真是够够的)(时间就是金钱,效率就是生命。)请各位大佬能引以为鉴。再次说明:本人所有文章禁止转载!本人所有文章禁止抄袭!

正文:
1、python 的requests请求都可以使用timeout参数。
2、timeout参数可以传入一个简单的浮点数,它将请求的连接部分和读取部分设为相同的超时时间。
3、timeout参数也可以传入一个包含两个简单浮点数的元组,用来分别设置请求超时时间和读取超时时间。

下面来用代码进行说明:

传入简单浮点数:

import requests

# 设置超时时间为1秒:
r = requests.get("https://gethub.com", timeout=1)
print(r.status_code)
------------------------------------------------------------------------
执行结果:
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='gethub.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.VerifiedHTTPSConnection object at 0x000001B820359248>, 'Connection to gethub.com timed out. (connect timeout=1)'))
因为在1秒的连接时间内没有连接到服务器,所以就会报连接超时的错误,如上。

上方代码仅将timeout参数传入了一个简单浮点数,这个传入值不一定是个整数,也可以是0.1,0.05这些浮点数。

传入元组:

import requests

# 传入元组将分别作为连接,读取的超时时间
r = requests.get("https://baidu.com", timeout=(0.01, 0.01))
print(r.status_code)
------------------------------------------------------------------------
执行结果:
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='baidu.com', port=443): Read timed out. (read timeout=0.01)
因为读取时间设置的比较短,所以产生了读取超时错误

如果想永久等待,可以将timeout的参数值设为None或者不设置该参数:

r = requests.get("https://baidu.com", timeout=None)
r = requests.get("https://baidu.com")

注: 如果你传入三个参数,python会以错误的方式提示你这个参数都有什么传入值如下:

Pass a (connect, read) timeout tuple, or a single float to set both timeouts to the same value
------------------------------------------------------------------------
翻译:传递(连接、读取)超时元组或单个浮点数,将两个超时设置为相同的值

后话: 在《python3 网络爬虫开发实战》的136页,

r = requests.get('https://taobao.com', timeout=(5,11, 30))

这行代码的timeout参数的传入值是有错误的,就像上边说的,这个传入元组只能是两个元素,三个元素的传入是会产生错误的。

  • 45
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dunkle.T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值