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



我创建具有requests的 POST 请求,如下所示,具有指定的timeout阈值:

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

但是,要确定"良好"threshold,我需要对服务器响应时间进行基准测试。

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

requests.post()(

requests.get()等(返回的Response对象具有一个名为 elapsed 的属性,它提供发送Request和接收Response之间的时间增量。若要获取以秒为单位的增量,请使用 total_seconds() 方法:

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

请注意,requests.post() 是同步操作,这意味着它会阻塞,直到收到Response

这取决于你是否可以用大量的测试请求来攻击服务器,或者你是否需要等待真正的请求发生。

如果您需要实际请求数据,则需要包装调用以确定每个请求的时间:

start = time.perf_counter()
response = requests.post(url, data=post_fields, timeout=timeout)
request_time = time.perf_counter() - 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