response對象的elapsed屬性

在Python的requests庫中,當我們發送一個請求后,會得到一個Response對象,這個對象有一個elapsed屬性,它返回一個timedelta對象,表示從發送請求到收到響應所經過的時間。

response.elapsed.total_seconds()?是 Python?requests?庫中的一個方法,用于獲取 HTTP 請求從發送到接收響應所花費的總時間(以秒為單位,浮點數形式)。以下是具體用法和示例:


?基本用法?

import requestsresponse = requests.get("https://www.example.com")
elapsed_time = response.elapsed.total_seconds()  # 獲取請求耗時(秒)
print(f"請求耗時: {elapsed_time} 秒")

?完整示例?

1. 測量請求耗時并處理超時

import requestsurl = "https://www.example.com"
try:response = requests.get(url, timeout=5)  # 設置超時時間為5秒elapsed = response.elapsed.total_seconds()print(f"請求成功!狀態碼: {response.status_code}, 耗時: {elapsed:.3f} 秒")
except requests.exceptions.Timeout:print("請求超時!")
except requests.exceptions.RequestException as e:print(f"請求失敗: {e}")

2. 比較多個請求的耗時

import requestsurls = ["https://www.google.com","https://www.github.com","https://www.python.org"
]for url in urls:try:response = requests.get(url)elapsed = response.elapsed.total_seconds()print(f"{url} 耗時: {elapsed:.2f} 秒")except Exception as e:print(f"{url} 請求出錯: {e}")

3. 結合性能測試(計算平均耗時)

import requests
import statisticsurl = "https://www.example.com"
times = []for _ in range(5):  # 發送5次請求,計算平均耗時response = requests.get(url)times.append(response.elapsed.total_seconds())avg_time = statistics.mean(times)
print(f"平均耗時: {avg_time:.3f} 秒")

elapsed時間包括請求發送、服務器處理以及響應返回的時間,但不包括DNS解析、連接池等待等時間(實際上,elapsed是從發送請求開始到響應返回為止的時間,包括連接建立的時間,如果連接是新建的,則包括DNS解析和TCP連接建立的時間。但是,如果使用了會話(Session)并且連接是復用的,那么elapsed就不包括連接建立的時間)。


?關鍵說明?

  1. ?response.elapsed?是一個?datetime.timedelta?對象,total_seconds()?將其轉換為秒。
  2. ?適用場景?:性能監控、API響應時間分析、超時處理等。
  3. ?注意事項?:
    • 如果請求失敗(如超時或網絡錯誤),response?對象可能不存在,需配合異常處理使用。
    • 時間不包括DNS解析、TCP連接等底層網絡開銷,僅測量從發送請求到接收第一個字節的時間。

?輸出示例?

請求成功!狀態碼: 200, 耗時: 0.452 秒
https://www.google.com 耗時: 0.32 秒
https://www.github.com 耗時: 0.87 秒
平均耗時: 0.512 秒

通過這種方法,你可以方便地監控和優化請求性能。

什么是elapsed屬性?

在Python的requests庫中,elapsed是一個屬性,它返回一個timedelta對象,表示從發送HTTP請求到接收到響應所經過的時間。

import requests# 發送HTTP請求
response = requests.get('https://www.baidu.com')# 獲取響應時間
response_time = response.elapsed
print(f"響應時間: {response_time}")
print(f"總秒數: {response_time.total_seconds()}秒")# 響應時間: 0:00:00.062012
# 總秒數: 0.062012秒

elapsed屬性非常有用,特別是在需要監控API性能或確保服務響應時間符合SLA(服務級別協議)時。

理解timedelta對象

timedelta是Python?datetime模塊中的一個類,用于表示時間間隔或持續時間

timedelta的主要屬性:

  • days?- 天數
  • seconds?- 秒數(不包括天數部分)
  • microseconds?- 微秒數(不包括天數和秒數部分)

常用的方法:

  • total_seconds()?- 返回總秒數(包括天、秒和微秒轉換后的秒數)
from datetime import timedelta# 創建timedelta對象
delta = timedelta(days=1, hours=3, minutes=30, seconds=15)print(f"天數: {delta.days}")
print(f"秒數: {delta.seconds}") # 輸出: 12615 (3 * 3600 + 30 * 60 + 15)
print(f"總秒數: {delta.total_seconds()}") # 輸出: 99015.0 (86400 + 12615)# 天數: 1
# 秒數: 12615
# 總秒數: 99015.0

elapsed與timedelta的實際應用

在HTTP請求中,response.elapsed返回一個timedelta對象,我們可以使用它來:

  1. 檢查響應時間是否在可接受范圍內
  2. 記錄API性能指標
  3. 設置超時閾值
  4. 比較不同端點或服務的性能
import requestsresponse = requests.get('https://www.baidu.com')# 斷言響應時間小于1秒
assert response.elapsed.total_seconds() < 1.0, f"響應時間過長: {response.elapsed.total_seconds()}秒"# 記錄響應時間
print(f"請求完成,耗時: {response.elapsed.total_seconds():.3f}秒")# 獲取詳細的各部分時間
print(f"天數: {response.elapsed.days}")
print(f"秒數: {response.elapsed.seconds}")
print(f"微秒數: {response.elapsed.microseconds}")
print(f"總秒數: {response.elapsed.total_seconds()}")
# 請求完成,耗時: 0.046秒
# 天數: 0
# 秒數: 0
# 微秒數: 45978
# 總秒數: 0.045978

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94332.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94332.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94332.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ansible】5.在受管主機部署文件和Jinja2模板

1.Ansible 中&#xff0c;如何用模塊創建一個文件并設置權限644并設置SELinux類型&#xff0c;如何從受管主機中刪除文件&#xff1f;使用ansible.builtin集合中的 file 模塊&#xff0c;添加state&#xff1a;touch 創建文件&#xff0c;mode&#xff1a;‘0644’ 設置權限&am…

雪花算法數據庫主鍵

雪花算法&#xff08;Snowflake&#xff09;作為一種分布式 ID 生成方案&#xff0c;在分布式系統中具有顯著優勢&#xff0c;能夠解決多個關鍵問題。以下是它的核心好處及主要應用場景&#xff1a;雪花算法的核心好處全局唯一性&#xff1a;通過時間戳、機器 ID、數據中心 ID …

C/C++ 頭文件命名約定

有的時候&#xff0c;在C的代碼中&#xff0c;可以看到有如下的頭文件引用的代碼: #include <iostream> #include <unistd.h> #include <csignal>其中有一些是引用了.h文件&#xff0c;另外一些是引用了模塊式的比如iostream和csignal&#xff0c;那么為什么…

異質結3.0時代的降本提效革命:捷造科技設備技術創新與產業拐點分析

光伏產業經歷了從PERC到TOPCon和異質結&#xff08;HJT&#xff09;的技術迭代&#xff0c;而2025年將成為異質結技術規模化應用的關鍵轉折點。捷造科技通過一系列突破性技術創新&#xff0c;將GW級異質結整線設備價格降至2億元&#xff0c;較行業平均水平降低約40%&#xff0c…

【網絡】http 協議中 Vary 標頭的作用

在 HTTP 協議中&#xff0c;Vary 標頭是一個關鍵的緩存控制機制&#xff0c;用于告知緩存服務器&#xff08;或代理&#xff09;&#xff1a;響應內容的生成依賴于請求中的哪些特定頭部字段。其核心作用是確保緩存服務器能根據這些字段的差異&#xff0c;正確區分和返回不同版本…

CSS 進階用法

一、選擇器進階復雜選擇器組合詳解后代選擇器后代選擇器使用空格分隔兩個選擇器&#xff0c;例如div p&#xff0c;表示選擇div元素內所有的p元素。這種選擇方式會匹配所有層級的后代元素&#xff0c;包括子元素、孫元素等任意深度的嵌套元素。應用示例&#xff1a;/* 選中arti…

GitHub 熱榜項目 - 日榜(2025-08-23)

GitHub 熱榜項目 - 日榜(2025-08-23) 生成于&#xff1a;2025-08-23 統計摘要 共發現熱門項目&#xff1a;13 個 榜單類型&#xff1a;日榜 本期熱點趨勢總結 本期GitHub熱榜呈現三大技術熱點&#xff1a;1&#xff09;AI工作流構建成為風口&#xff0c;sim和airi等項目展示…

SHAP分析+KOA-RIME開普勒結合霜冰算法雙重優化BP神經網絡+9種映射方法+新數據預測!機器學習可解釋分析!

代碼主要功能 該Matlab代碼實現了一個KOA-RIME開普勒結合霜冰算法雙重優化的BP神經網絡回歸模型&#xff0c;結合特征貢獻度分析&#xff08;SHAP&#xff09;和新數據預測功能。核心功能包括&#xff1a; 雙重參數優化&#xff1a;先用智能算法&#xff08;以chebyshev映射改進…

【數據結構】棧和隊列——棧

目錄棧和隊列棧棧的基本概念棧的順序存儲實現棧的定義與初始化入棧操作出棧操作讀取棧頂元素判空和判滿操作棧的銷毀操作操作集合棧和隊列 棧 棧的基本概念 棧的定義&#xff1a; 棧&#xff08;Stack&#xff09; 是一種線性表&#xff0c;它限定了數據元素的插入和刪除操…

大數據管理與應用系列叢書《數據挖掘》讀書筆記之集成學習(1)

文章目錄前言一、集成學習是什么&#xff1f;1.基本思想2.集成學習的類型3. 集成學習的結合策略3.1 為什么結合策略是集成學習的靈魂&#xff1f;3.2 經典策略(1)**投票法&#xff08;Voting&#xff09;****(2)平均法&#xff08;Averaging&#xff09;****(3) 學習法**3.3 關…

嵌入式知識篇---32GUI

要理解 32 位單片機的 GUI&#xff0c;咱們先從 “基礎概念” 入手&#xff0c;再拆成 “為什么能跑 GUI”“核心組成”“怎么實現”“常用工具”“實際用途” 這幾步講&#xff0c;全程不用復雜術語&#xff0c;像聊日常用品一樣說清楚。一、先搞懂 2 個基礎概念在講 “32 位單…

【iOS】SDWebImage第三方庫源碼學習筆記

前言之前在寫項目時&#xff0c;經常用到SDWebImage這個第三方庫來加載圖片&#xff0c;并且了解到了這個第三方庫在處理圖片時自帶異步下載和緩存功能&#xff0c;以及對cell復用的處理。這篇文章來系統學習一下SDWebImage第三方庫的知識以及底層原理簡介SDWebImage為UIImageV…

Linux --網絡基礎概念

一.網絡發展獨立模式&#xff1a;在早期計算機之間是相互獨立的&#xff0c;機器之間的數據只能通過軟硬盤來傳輸&#xff0c;這就代表無法同時完成任務&#xff0c;需要前面的計算機完成各自的任務經過硬盤傳遞數據再完成自己的任務&#xff0c;效率十分低下。網絡互聯&#x…

教育系統搭建攻略:線上知識付費與線下消課排課全解析

作為一名資深平臺測評師&#xff0c;最近我挖到了一個教育機構的 “寶藏工具”—— 喬拓云教育系統。別看它名字低調&#xff0c;用起來那叫一個順手&#xff0c;線上知識付費、線下消課排課全給你安排得明明白白&#xff0c;簡直是機構老板和教務員的 “摸魚神器”。多端口管理…

PMP項目管理知識點-①項目基本概念

目錄 1.項?的定義 概念&#xff1a; 特點&#xff1a; 項?與運營的區別 項?特點&#xff1a; 運營特點&#xff1a; 2.項?管理的發展 3.項?、項?集與項?組合 結構層次 4.項?的關鍵組成部分 項??命周期&#xff1a; 項?管理過程組&#xff1a; 項?階段&…

Python內置函數全解析:30個核心函數語法、案例與最佳實踐指南

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 持續學習&#xff0c;不斷…

數據建模怎么做?一文講清數據建模全流程

目錄 一、需求分析 1. 搞清楚業務目標&#xff1a;這數據是要解決啥問題&#xff1f; 2. 明確數據邊界&#xff1a;哪些數據該要&#xff0c;哪些不該要&#xff1f; 3. 弄明白使用場景&#xff1a;誰用這數據&#xff0c;怎么用&#xff1f; 二、模型設計 1. 第一步&…

胸部X光片數據集:健康及肺炎2類,14k+圖像

胸部X光片數據集概述 數據集包含14090張圖像,分為正常胸部X光3901張,肺炎胸部X光10189張。 標注格式:無標注,文件夾分類。 圖像尺寸:640*640 正常胸部X光: 肺炎胸部X光: 數據采集: 拍攝方式:均為前后位(anterior-posterior)胸部X光,屬患者常規臨床護理的一部分…

MySQL數據庫開發教學(二) 核心概念、重要指令

書接上回&#xff1a;MySQL數據庫開發教學(一) 基本架構-CSDN博客 建議工具&#xff1a; Navicat Premium (收費 / 需破解)&#xff1a;Navicat Premium | 管理和開發你的數據庫 phpstudy 2018 (免費)&#xff1a;phpStudy - Windows 一鍵部署 PHP 開發環境 小皮出品 前言 …

【40頁PPT】數字工廠一體化運營管控平臺解決方案(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808811/91716541 資料解讀&#xff1a;【40頁PPT】數字工廠一體化運營管控平臺解決方案 詳細資料請看本解讀文章的最后內容。該資料圍繞數字工廠一體…