我怎么能得到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/)