我为我编写了一个快速测试,以更好地了解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
我想念什么?
答案 0 :(得分:1)
从请求docs:
timeout不是整个响应下载的时间限制;相反,如果服务器在超时秒内未发出响应(更确切地说,在超时秒内未在基础套接字上接收到任何字节),则会引发异常。如果未明确指定超时,则请求不会超时。
打印时间是该过程的总时间,但是timeout参数涉及基础套接字所经过的时间,如上所述,在该套接字中没有收到字节。