Requests报”requests.exceptions.Timeout: {timeout message} “的原因以及解决办法

  • Post category:Python
  1. 原因

一般来说,当使用Requests库发送请求时,会出现requests.exceptions.Timeout: {timeout message}的错误。这是由请求过程所花费的时间超过了设定的超时时间导致的。超时时间默认为None,表示请求不会超时,但是如果想要手动设置一个较短的请求超时时间,就需要使用timeout参数了。

  1. 解决办法

下面是解决requests.exceptions.Timeout错误的方法:

2.1 增加参数timeout

在发送请求的时候,可以增加一个timeout参数,来设定一个较短的请求超时时间。timeout参数可以是一个浮点数或元组类型的值,分别表示设置请求连接超时时间和响应读取超时时间。例如:

import requests

response = requests.get('https://www.examplepage.com', timeout=(0.1, 1))

上面的代码设置了请求连接超时时间为0.1秒、响应读取超时时间为1秒。

2.2 修改默认超时时间

如果不希望在每次发送请求时都手动设置timeout参数,可以通过修改默认超时时间的方式来解决问题。可以通过修改requests库的全局配置来设置默认超时时间,全局配置位于requests.packages.urllib3.util.timeout.Timeout类中的DEFAULT_TIMEOUT属性。

例如:

import requests.packages.urllib3.util.timeout as timeout

timeout.DEFAULT_TIMEOUT = 2

上面的代码将全局默认超时时间设置为2秒。此后,即使不设置timeout参数,每次请求的默认超时时间也会是2秒。

以上就是解决requests.exceptions.Timeout错误的两种常用办法,选择的方式要根据个人实际情况决定。