Python requests库中timeout参数详解

text = requests.get(self.target_img_url, headers=headers, stream=True, verify=False, timeout=(5,5))
在Python的`requests`库中,`timeout`参数用于设置请求的超时时间。当一个请求在指定的时间内没有完成时,`requests`库会抛出一个`requests.exceptions.Timeout`异常。

`timeout`参数可以是一个单一的浮点数,也可以是一个包含两个浮点数的元组。当它是一个元组时,第一个数字是连接超时时间(connect timeout),第二个数字是读取超时时间(read timeout)。
text = requests.get(self.target_img_url, headers=headers, stream=True, verify=False, timeout=(5,5))
timeout=(5,5)`表示:

1. 连接超时时间(connect timeout):5秒
2. 读取超时时间(read timeout):5秒

这意味着,如果`requests.get()`在5秒内无法建立连接,或者在5秒内无法完成读取操作,它将抛出一个`requests.exceptions.Timeout`异常。

下面是一个简单的例子来说明这个超时设置是如何工作的:
import requests
import time

url = "http://example.com"  # 假设这是一个非常慢的服务器,需要10秒才能响应
headers = {}

try:
    response = requests.get(url, headers=headers, stream=True, verify=False, timeout=(5,5))
    response.raise_for_status()  # 如果响应状态码不是200,则抛出异常
    print("Success!")
except requests.exceptions.Timeout:
    print("Request timed out!")
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")
在这个例子中,由于服务器的响应时间超过了设定的超时时间(5秒),所以会捕获到`requests.exceptions.Timeout`异常并打印"Request timed out!"。如果服务器响应很快,那么它会打印"Success!"。

作者:Leon_Jinhai_Sun

物联沃分享整理
物联沃-IOTWORD物联网 » Python requests库中timeout参数详解

发表回复