天天看點

python接口自動化20-requests擷取響應時間(elapsed)與逾時(timeout)前言elapsed官方文檔擷取響應時間timeout逾時

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

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

關于requests請求的響應時間,官網上沒太多介紹,并且我百度搜了下,看很多資料寫的是r.elapsed.microseconds擷取的,然而都是錯的!!!

2.用help()檢視elapsed裡面的方法

elapsed裡面幾個方法介紹

total_seconds 總時長,機關秒

days 以天為機關

microseconds (>= 0 and less than 1 second) 擷取微秒部分,大于0小于1秒

seconds Number of seconds (>= 0 and less than 1 day) 秒,大于0小于1天

max = datetime.timedelta(999999999, 86399, 999999) 最大時間

min = datetime.timedelta(-999999999) 最小時間

resolution = datetime.timedelta(0, 0, 1) 最小時間機關

1.擷取elapsed不同的傳回值

python接口自動化20-requests擷取響應時間(elapsed)與逾時(timeout)前言elapsed官方文檔擷取響應時間timeout逾時

2.網上很多資料寫的是用microseconds擷取響應時間,再除1000*1000得到時間為秒的機關,當請求小于1s時,發現不出什麼問題。如果時間超過1s,問題就來了。

(很顯然,大于1s的時候,隻截取了後面的小數部分)

python接口自動化20-requests擷取響應時間(elapsed)與逾時(timeout)前言elapsed官方文檔擷取響應時間timeout逾時

3.是以擷取響應時間的正确姿勢應該是:r.elapsed.total_seconds(),機關是s

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

2.如下請求,設定逾時為0.5s,那麼就會抛出這個異常:requests.exceptions.ConnectTimeout: HTTPConnectionPool

python接口自動化20-requests擷取響應時間(elapsed)與逾時(timeout)前言elapsed官方文檔擷取響應時間timeout逾時