我正在使用以下代码检查平均响应时间,因为我注意到它非常慢:
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!
答案 0 :(得分:3)
timeout
是允许服务器 * 做出任何响应的最长时间。如果超时为10秒,并且服务器返回一个100字节的文件,则每9秒一次返回一个字节,那么您将永远不会超时...但是您将等待很长时间才能完成响应(总经过时间为900秒)。例如:即使一个超时为10秒的请求,平均响应时间也将为15分钟。
值得注意的是,响应对象已经具有.elapsed
属性,该属性为您提供了timedelta
对象,您可以使用该对象来避免使用time.time()
并自己执行计算。
* 从http://docs.python-requests.org/en/master/user/quickstart/#timeouts改写:
timeout不是整个响应下载的时间限制;相反,如果服务器在超时秒内未发出响应(更确切地说,在超时秒内未在基础套接字上接收到任何字节),则会引发异常。如果未明确指定超时,则请求不会超时。