python请求超时不超时

时间:2019-10-07 21:29:22

标签: python python-requests

我为我编写了一个快速测试,以更好地了解python请求超时。我的理解是超时参数以秒为单位,因此超时为1表示,如果连接或读取时间超过1秒,则应该引发错误。

import requests
try:
    r = requests.get("https://stackoverflow.com/",timeout=0.1)
    print(r.elapsed)
except requests.exceptions.Timeout as e:
    print(e)

我首先运行将timeout属性设置为1的脚本,以了解从stackoverflow读取数据需要花费多长时间。我的回复刚刚超过0.1秒。所以自然地我将超时减少到0.1并期望发生错误,但是我仍然获得了经过的时间。打印的时间段都在0.1以上

例如:

0:00:00.117071
0:00:00.118653
0:00:00.120222

我想念什么?

1 个答案:

答案 0 :(得分:1)

从请求docs

  

timeout不是整个响应下载的时间限制;相反,如果服务器在超时秒内未发出响应(更确切地说,在超时秒内未在基础套接字上接收到任何字节),则会引发异常。如果未明确指定超时,则请求不会超时。

打印时间是该过程的总时间,但是timeout参数涉及基础套接字所经过的时间,如上所述,在该套接字中没有收到字节。