如何设置urllib3请求的超时时间?



我怎么能得到urllib3尝试到达一个网站10秒,并返回一个错误或数据,如果它不能?

http = urllib3.PoolManager()
page = http.request('get', link)

From the docs

https://urllib3.readthedocs.io/en/stable/reference/urllib3.util.html urllib3.util.Timeout

from urllib3 import Timeout, Poolmanager
timeout = Timeout(connect=2.0, read=7.0)
http = PoolManager(timeout=timeout)
response = http.request('GET', 'http://example.com/')

基于Timeout configuration[urllib3-docs]你可以为你的请求设置一个超时,当你使用urllib3在以下所有的方式:

超时可以定义为池的默认值:

timeout = Timeout(connect=2.0, read=7.0)
http = PoolManager(timeout=timeout)
response = http.request('GET', 'http://example.com/')

或每个请求(覆盖池的默认值):

response = http.request('GET', 'http://example.com/', >timeout=Timeout(10))

可以通过将所有参数设置为None来禁用超时:

no_timeout = Timeout(connect=None, read=None)
response = http.request('GET', 'http://example.com/, >timeout=no_timeout)

我认为你的解决方案是下面的代码片段:

from urllib3 import Timeout, Poolmanager
timeout = Timeout(connect=10.0, read=None)
http = PoolManager(timeout=timeout)
response = http.request('GET', 'http://example.com/)

最新更新