python requests请求之timeout参数

requests请求之timeout参数

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

举例说明:

1、传入简单浮点数:

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这些浮点数。

2、传入元组:

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)
因为读取时间设置的比较短,所以产生了读取超时错误

3、如果想永久等待,可以将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
------------------------------------------------------------------------
翻译:传递(连接、读取)超时元组或单个浮点数,将两个超时设置为相同的值

相关内容:

Python爬虫timeout以及retrying的使用

来源:

python requests请求之timeout参数 - 习久性成 - 博客园

可参考:

Requests 官方文档

python笔记

Python爬虫timeout以及retrying的使用

2021-10-5 0:05:17

python笔记

python支持中文变量名吗?

2021-10-5 9:54:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索