连接池#

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) -- 要包含在所有请求中的头,除非显式给定了其他头。

  • retries (Retry | bool | int | None) -- 重试配置,默认情况下用于此池中的请求。

  • _proxy (Url | None) -- 解析后的代理URL,不应直接使用,请参见 urllib3.ProxyManager

  • _proxy_headers (Mapping[str, str] | None) -- 带有代理标头的字典不应直接使用,请参见 urllib3.ProxyManager

  • **conn_kw (Any) -- 其他参数用于创建新的 urllib3.connection.HTTPConnectionurllib3.connection.HTTPSConnection 实例。

  • _proxy_config (ProxyConfig | None) --

  • **conn_kw --

ConnectionCls#

HTTPConnection 的别名

close()#

关闭所有池连接并禁用池。

返回类型:

None

is_same_host(url)#

检查给定的 url 是此连接池所在主机的成员。

参数:

url (str) --

返回类型:

bool

scheme: str | None = 'http'#
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 of str/bytes 或类似文件的对象。

  • headers (Mapping[str, str] | None) -- 要发送的自定义头的字典,如用户代理、如果不匹配等。如果不匹配,则使用池头。如果提供,这些头将完全替换任何池特定的头。

  • retries (Retry, False, or an int.) -- 配置在引发之前允许的重试次数 MaxRetryError 例外。通过 None 在收到响应之前重试。通过A Retry 对象,用于对不同类型的重试进行细粒度控制。传递一个整数以重试多次连接错误,但不传递其他类型的错误。过零表示永不重试。如果 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) --

返回类型:

BaseHTTPResponse

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

等同于 HTTPConnectionPool 但HTTPS。

HTTPSConnection 使用以下选项之一 assert_fingerprintassert_hostnamehost 按此顺序验证连接。如果 assert_hostname 为假,则不进行任何验证。

这个 key_filecert_filecert_reqsca_certsca_cert_dirssl_versionkey_password 仅在以下情况下使用 ssl 是可用的 urllib3.util.ssl_wrap_socket() 将连接套接字升级为ssl套接字。

参数:
  • host (str) --

  • port (int | None) --

  • timeout (_TYPE_TIMEOUT | None) --

  • maxsize (int) --

  • block (bool) --

  • headers (Mapping[str, str] | None) --

  • retries (Retry | bool | int | None) --

  • _proxy (Url | None) --

  • _proxy_headers (Mapping[str, str] | None) --

  • key_file (str | None) --

  • cert_file (str | None) --

  • cert_reqs (int | str | None) --

  • key_password (str | None) --

  • ca_certs (str | None) --

  • ssl_version (int | 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 的别名

scheme: str | None = 'https'#
class urllib3.connectionpool.ConnectionPool(host, port=None)#

基类:object

所有连接池的基类,例如 HTTPConnectionPoolHTTPSConnectionPool .

备注

urlopen()不会标准化或百分比编码目标URI,这在目标服务器不支持百分比编码的目标URI时很有用。

参数:
  • host (str) --

  • port (int | None) --

QueueCls#

LifoQueue 的别名

close()#

关闭所有池连接并禁用池。

返回类型:

None

scheme: str | None = None#
urllib3.connectionpool.connection_from_url(url, **kw)#

给定一个url,则返回一个 ConnectionPool 其宿主的实例。

这是一种快捷方式,在创建 ConnectionPool 举个例子。

参数:
  • url (str) -- 必须包含方案的绝对URL字符串。端口是可选的。

  • **kw (Any) -- 将附加参数传递给相应的 ConnectionPool 。用于指定诸如超时、最大大小、标头等内容。

返回类型:

HTTPConnectionPool

例子::

>>> conn = connection_from_url('http://google.com/')
>>> r = conn.request('GET', '/')