python接口自動化(十七) requests獲取響應時間(elapsed)與超時(timeout)


前言

requests發請求時,接口的響應時間,也是我們需要關注的一個點,如果響應時間太長,也是不合理的。

如果服務端沒及時響應,也不能一直等着,可以設置一個timeout超時的時間。

elapsed官方文檔

1.elapsed方法的官方文檔地址:http://cn.python-requests.org/zh_CN/latest/api.html#requests.Response

elapsed = None
The amount of time elapsed between sending the request and the arrival of the response (as a timedelta). This property specifically measures the time taken between sending the first byte of the request and finishing parsing the headers. It is therefore unaffected by consuming the response content or the value of the stream keyword argument.

 從發送請求到響應到達之間經過的時間量(以時間增量表示)。此屬性專門度量從發送請求的第一個字節到完成對頭的解析所用的時間。因此,它不受使用響應內容或stream關鍵字參數值的影響。 

2.用help()查看elapsed里面的方法

import requests
r=requests.get("https://www.baidu.com")
print(help(r.elapsed))

 elapsed里面幾個方法介紹

  • total_seconds 總時長,單位秒
  • microseconds: Number of microseconds (>= 0 and less than 1 second)  獲取微妙部分,大於0小於1秒
  • seconds:Number of seconds (>= 0 and less than 1 day)  秒,大於0小於1天
  • max = datetime.timedelta(days=999999999, seconds=86399, microseconds=9. 最大時間
  • min = datetime.timedelta(days=-999999999)  最小時間
  • resolution = datetime.timedelta(microseconds=1) 最小時間單位

獲取響應時間

1.獲取elapsed不同的返回值

import requests
r=requests.get("https://www.baidu.com")
print(r.elapsed)
print(r.elapsed.total_seconds())
print(r.elapsed.microseconds)
print(r.elapsed.seconds)
print(r.elapsed.days)
print(r.elapsed.max)
print(r.elapsed.min)
print(r.elapsed.resolution)

 響應結果

 

2.網上很多資料寫的是用microseconds獲取響應時間,當請求小於1s時,發現不出什么問題,如果時間超過1s,問題就來了。

(很顯然,大於1s的時候,只截取了后面的小數部分)

 

 3.所以獲取響應時間的正確姿勢應該是:r.elapsed.total_seconds(),單位是s

 timeout超時

1.如果一個請求響應時間比較長,不能一直等着,可以設置一個超時時間,讓它拋出異常。

2.如下請求,設置超時為1s,那么就會拋出這個異常:requests.exceptions.ConnectionError: HTTPSConnectionPool

import requests
a=requests.get("http://cn.python-requests.org/zh_CN/latest/",timeout=1)
print(a.elapsed)
print(a.elapsed.total_seconds())
print(a.elapsed.microseconds)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM