Python请求超时无法正常工作

时间:2018-11-10 18:39:17

标签: python python-3.x request python-requests

我正在使用以下代码检查平均响应时间,因为我注意到它非常慢:

            t1 = time.time()
            response = requests.get(url, timeout=10, headers=headers)
            t2 = time.time()
            reqtimes += t2 - t1
            reqamount += 1
            print("Average response time:" + str(reqtimes/reqamount))

当我连接到大约1000个不同的站点后打印平均响应时间时,它告诉我平均响应时间为70秒。为什么?我的超时设置为10!

1 个答案:

答案 0 :(得分:3)

timeout是允许服务器 * 做出任何响应的最长时间。如果超时为10秒,并且服务器返回一个100字节的文件,则每9秒一次返回一个字节,那么您将永远不会超时...但是您将等待很长时间才能完成响应(总经过时间为900秒)。例如:即使一个超时为10秒的请求,平均响应时间也将为15分钟。

值得注意的是,响应对象已经具有.elapsed属性,该属性为您提供了timedelta对象,您可以使用该对象来避免使用time.time()并自己执行计算。

* http://docs.python-requests.org/en/master/user/quickstart/#timeouts改写:

  

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