连接池#
- class urllib3.HTTPConnectionPool(host, port=None, timeout=_TYPE_DEFAULT.token, maxsize=1, block=False, headers=None, retries=None, _proxy=None, _proxy_headers=None, _proxy_config=None, **conn_kw)#
基类:
ConnectionPool
,RequestMethods
一台主机的线程安全连接池。
- 参数:
host (str) -- 用于此HTTP连接的主机(例如“localhost”),传入
http.client.HTTPConnection
。port (int | None) -- 用于此HTTP连接的端口(无等于80),传入
http.client.HTTPConnection
。timeout (_TYPE_TIMEOUT | None) -- 每个连接的套接字超时(秒)。这可以是一个浮点或整数,它设置HTTP请求的超时,或者
urllib3.util.Timeout
这使您可以更细粒度地控制请求超时。在解析构造函数之后,这始终是 urllib3.util.Timeout 对象。maxsize (int) -- 保存的连接数量可以重用。在多线程情况下,1以上是有用的。如果
block
如果设置为false,则将创建更多连接,但使用后将不会保存这些连接。block (bool) -- 如果设置为true,则不超过
maxsize
连接将一次使用。当没有可用的连接时,呼叫将被阻塞,直到连接被释放为止。这对于特定的多线程情况是一个有用的副作用,在这种情况下,不希望每个主机使用超过maxsize的连接来防止溢出。headers (Mapping[str, str] | None) -- 要包含在所有请求中的头,除非显式给定了其他头。
_proxy (Url | None) -- 解析后的代理URL,不应直接使用,请参见
urllib3.ProxyManager
_proxy_headers (Mapping[str, str] | None) -- 带有代理标头的字典不应直接使用,请参见
urllib3.ProxyManager
**conn_kw (Any) -- 其他参数用于创建新的
urllib3.connection.HTTPConnection
,urllib3.connection.HTTPSConnection
实例。_proxy_config (ProxyConfig | None) --
**conn_kw --
- ConnectionCls#
HTTPConnection
的别名
- close()#
关闭所有池连接并禁用池。
- 返回类型:
None
- urlopen(method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=_TYPE_DEFAULT.token, pool_timeout=None, release_conn=None, chunked=False, body_pos=None, preload_content=True, decode_content=True, **response_kw)#
从池中获取连接并执行http请求。这是发出请求的最低级别调用,因此需要指定所有原始详细信息。
备注
更常见的是,最好使用方便的方法,如
request()
。备注
release_conn 只有当 preload_content=False 因为我们想 preload_content=False 在不破坏向后兼容性的情况下,很快就会出现默认行为。
- 参数:
method (str) -- http请求方法(如get、post、put等)
url (str) -- 要对其执行请求的URL。
body (bytes | IO[Any] | Iterable[bytes] | str | None) -- 要在请求正文中发送的数据,可以是
str
,bytes
, an iterable ofstr
/bytes
或类似文件的对象。headers (Mapping[str, str] | None) -- 要发送的自定义头的字典,如用户代理、如果不匹配等。如果不匹配,则使用池头。如果提供,这些头将完全替换任何池特定的头。
retries (
Retry
, False, or an int.) -- 配置在引发之前允许的重试次数MaxRetryError
例外。通过None
在收到响应之前重试。通过ARetry
对象,用于对不同类型的重试进行细粒度控制。传递一个整数以重试多次连接错误,但不传递其他类型的错误。过零表示永不重试。如果False
,则禁用重试并立即引发任何异常。此外,不会在重定向时引发maxretryerror,而是返回重定向响应。redirect (bool) -- 如果为真,则自动处理重定向(状态代码301、302、303、307、308)。每一次重定向都将被视为一次重试。禁用重试也将禁用重定向。
assert_same_host (bool) -- 如果
True
将确保池请求的主机一致,否则将引发HostChangedError。什么时候False
,您可以在HTTP代理上使用该池并请求外部主机。timeout (Timeout | float | _TYPE_DEFAULT | None) -- 如果指定,则重写此请求的默认超时。它可以是浮点(以秒为单位)或
urllib3.util.Timeout
.pool_timeout (int | None) -- 如果设置并将池设置为block=true,则此方法将为
pool_timeout
秒,如果在此时间段内没有可用连接,则引发EmptyPoolerror。preload_content (bool) -- 如果为True,则响应的正文将预加载到内存中。
decode_content (bool) -- 如果为true,将尝试基于“内容编码”头解码正文。
release_conn (bool | None) -- 如果为False,则urlOpen调用不会在接收到响应后将连接释放回池中(但如果您读取了响应的全部内容,则将释放连接,例如 preload_content=True )。如果您没有立即预加载响应的内容,这将非常有用。你需要打电话给
r.release_conn()
关于回应r
将连接返回到池中。如果没有,则它的值为preload_content
它的缺省设置为True
。chunked (bool) -- 如果为true,urllib3将使用分块传输编码发送正文。否则,urllib3将使用标准内容长度表单发送正文。默认为false。
body_pos (int) -- 在重试或重定向时在类似文件的正文中查找的位置。通常不需要设置此值,因为urllib3将在需要时自动填充该值。
response_kw (Any) --
- 返回类型:
- class urllib3.HTTPSConnectionPool(host, port=None, timeout=_TYPE_DEFAULT.token, maxsize=1, block=False, headers=None, retries=None, _proxy=None, _proxy_headers=None, key_file=None, cert_file=None, cert_reqs=None, key_password=None, ca_certs=None, ssl_version=None, ssl_minimum_version=None, ssl_maximum_version=None, assert_hostname=None, assert_fingerprint=None, ca_cert_dir=None, **conn_kw)#
-
等同于
HTTPConnectionPool
但HTTPS。HTTPSConnection
使用以下选项之一assert_fingerprint
,assert_hostname
和host
按此顺序验证连接。如果assert_hostname
为假,则不进行任何验证。这个
key_file
,cert_file
,cert_reqs
,ca_certs
,ca_cert_dir
,ssl_version
,key_password
仅在以下情况下使用ssl
是可用的urllib3.util.ssl_wrap_socket()
将连接套接字升级为ssl套接字。- 参数:
host (str) --
port (int | None) --
timeout (_TYPE_TIMEOUT | None) --
maxsize (int) --
block (bool) --
_proxy (Url | None) --
key_file (str | None) --
cert_file (str | None) --
key_password (str | None) --
ca_certs (str | None) --
ssl_minimum_version (ssl.TLSVersion | None) --
ssl_maximum_version (ssl.TLSVersion | None) --
assert_hostname (str | Literal[False] | None) --
assert_fingerprint (str | None) --
ca_cert_dir (str | None) --
conn_kw (Any) --
- ConnectionCls#
HTTPSConnection
的别名
- class urllib3.connectionpool.ConnectionPool(host, port=None)#
基类:
object
所有连接池的基类,例如
HTTPConnectionPool
和HTTPSConnectionPool
.备注
urlopen()不会标准化或百分比编码目标URI,这在目标服务器不支持百分比编码的目标URI时很有用。
- close()#
关闭所有池连接并禁用池。
- 返回类型:
None
- urllib3.connectionpool.connection_from_url(url, **kw)#
给定一个url,则返回一个
ConnectionPool
其宿主的实例。这是一种快捷方式,在创建
ConnectionPool
举个例子。- 参数:
url (str) -- 必须包含方案的绝对URL字符串。端口是可选的。
**kw (Any) -- 将附加参数传递给相应的
ConnectionPool
。用于指定诸如超时、最大大小、标头等内容。
- 返回类型:
例子::
>>> conn = connection_from_url('http://google.com/') >>> r = conn.request('GET', '/')