簡體   English   中英

python 請求超時不超時

[英]python requests timeout doesn't timeout

我為我編寫了一個快速測試,以便更好地了解 python 請求超時。 我的理解是超時參數以秒為單位,因此超時 1 意味着,如果連接或讀取時間超過 1 秒,則應引發錯誤。

import requests
try:
    r = requests.get("https://stackoverflow.com/",timeout=0.1)
    print(r.elapsed)
except requests.exceptions.Timeout as e:
    print(e)

我首先運行了將 timeout 屬性設置為 1 的腳本,以了解從 stackoverflow 讀取需要多長時間。 我的反應剛剛超過 0.1 秒。 所以很自然地,我將超時時間減少到 0.1,期望會發生錯誤,但相反,我仍然打印了經過的時間。打印的時間段都在 0.1 以上

例如:

0:00:00.117071
0:00:00.118653
0:00:00.120222

我錯過了什么?

從請求文檔

timeout 不是整個響應下載的時間限制; 相反,如果服務器在 timeout 秒內沒有發出響應(更准確地說,如果在 timeout 秒內底層套接字上沒有收到任何字節),則會引發異常。 如果沒有明確指定超時,則請求不會超時。

您正在打印的時間是該過程的總時間,但 timeout 參數涉及底層套接字所用的時間,其中沒有收到如上所述的字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM