我创建具有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