如何测量Python请求POST请求的服务器响应时间?

时间:2017-04-06 10:29:37

标签: python python-3.x server network-programming python-requests

我创建了requests这样的POST请求,其中我指定了超时阈值:

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

但是,要确定“良好”的阈值,我想提前对服务器响应时间进行基准测试。

如何计算服务器的最短和最长响应时间?

2 个答案:

答案 0 :(得分:30)

Response返回的requests.post()对象有一个名为elapsed的属性,该属性提供Request已发送且Response之间的时间差异。接收。要在几秒钟内获得增量,请使用total_seconds()方法:

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

应该提到的是requests.post()是一个同步操作,这意味着它会在收到响应之前“阻塞”。

答案 1 :(得分:3)

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

如果您需要真实的请求数据,那么您需要打包调用以确定每个请求的时间:

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这样的东西在没有python的情况下对响应进行基准测试,并为每个请求发送测试数据:

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