我使用requests创建POST请求,如下所示,并使用指定的timeout阈值:response = requests.post(url, data=post_fields, timeout=timeout)但是,要确定一个“好”的threshold,我需要对服务器响应时间进行基准测试。如何计算服务器的最小和最大响应时间?
requests
timeout
response = requests.post(url, data=post_fields, timeout=timeout)
threshold
x7yiwoj41#
requests.post()(以及requests.get()等)返回的Response对象有一个名为elapsed的属性,该属性提供了发送Request和接收Response之间的时间差。要获得以秒为单位的增量,请使用total_seconds()方法:
requests.post()
requests.get()
Response
elapsed
Request
total_seconds()
response = requests.post(url, data=post_fields, timeout=timeout) print(response.elapsed.total_seconds())
请注意,requests.post()是同步操作,这意味着它会阻塞,直到收到Response。
uhry853o2#
这取决于您是否可以用大量的测试请求访问服务器,或者您是否需要等待真实的的请求发生。如果你需要真实的请求数据,那么你需要 Package 调用来确定每个请求的时间:
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
您需要在某个地方存储一段时间内每个请求的结果(文件、数据库等)。然后,您可以计算响应时间的统计数据。如果你有一个可用的测试服务器,你可以在没有python的情况下使用类似apachebench的东西来对响应进行基准测试,并为每个请求发送测试数据:https://gist.github.com/kelvinn/6a1c51b8976acf25bd78
2条答案
按热度按时间x7yiwoj41#
requests.post()
(以及requests.get()
等)返回的Response
对象有一个名为elapsed
的属性,该属性提供了发送Request
和接收Response
之间的时间差。要获得以秒为单位的增量,请使用total_seconds()
方法:请注意,
requests.post()
是同步操作,这意味着它会阻塞,直到收到Response
。uhry853o2#
这取决于您是否可以用大量的测试请求访问服务器,或者您是否需要等待真实的的请求发生。
如果你需要真实的请求数据,那么你需要 Package 调用来确定每个请求的时间:
您需要在某个地方存储一段时间内每个请求的结果(文件、数据库等)。然后,您可以计算响应时间的统计数据。
如果你有一个可用的测试服务器,你可以在没有python的情况下使用类似apachebench的东西来对响应进行基准测试,并为每个请求发送测试数据:
https://gist.github.com/kelvinn/6a1c51b8976acf25bd78