2017-04-06 92 views
2

创建requests后请求这样的,我在那里指定超时阈值:如何测量Python请求的服务器响应时间POST请求?

response = requests.post(url, data=post_fields, timeout=timeout)

然而,要确定一个“好”的阈值,我想标杆服务器的响应时间提前。

如何计算服务器的最小和最大响应时间?

+0

查看'contextmanager'你可以将它包装在一个简单的函数中,该函数需要经过的时间,而不必编写一个全新的装饰器 –

回答

3

Response对象由requests.post()返回有一个属性称为elapsed,它给出Request之间的时间差值被发送,并且收到Response。要获得的秒数,使用total_seconds()方法:

response = requests.post(url, data=post_fields, timeout=timeout) 
print(response.elapsed.total_seconds()) 

应当提及的是requests.post()是同步操作,这意味着它“块”,直到响应被接收。

2

这取决于您是否可以通过大量测试请求来访问服务器,或者您是否需要等待真正的请求发生。

如果你需要真正的请求数据,那么你需要换通话,以确定每个请求的时间:

start = time.clock() 
response = requests.post(url, data=post_fields, timeout=timeout) 
request_time = time.clock() - start 
self.logger.info("Request completed in {0:.0f}ms".format(request_time) 
#store request_time in persistent data store 

你会需要的地方每个请求的结果存储在一段时间(文件,数据库等)。然后,您可以计算响应时间的统计信息。

如果你有一个测试服务器可用,你可以基准,而无需使用类似apachebench蟒蛇并为每个请求发送测试数据的响应:

https://gist.github.com/kelvinn/6a1c51b8976acf25bd78