连接池

class urllib3.HTTPConnectionPool(host, port=None, strict=False, timeout=<object object>, maxsize=1, block=False, headers=None, retries=None, _proxy=None, _proxy_headers=None, **conn_kw)

基类:urllib3.connectionpool.ConnectionPool, urllib3.request.RequestMethods

一台主机的线程安全连接池。

参数
  • host -- 用于此http连接的主机(例如“localhost”),传递到 httplib.HTTPConnection .

  • port -- 用于此http连接的端口(无端口等于80),传入 httplib.HTTPConnection .

  • strict -- 如果状态行不能被解析为有效的HTTP或1或1.1状态行,则导致BADSTATUS行被引发。 httplib.HTTPConnection . …注意:仅适用于Python2。在python 3中忽略此参数。

  • timeout -- 每个连接的套接字超时(秒)。这可以是一个浮点或整数,它设置HTTP请求的超时,或者 urllib3.util.Timeout 这使您可以更细粒度地控制请求超时。在解析构造函数之后,这始终是 urllib3.util.Timeout 对象。

  • maxsize -- 保存的连接数量可以重用。在多线程情况下,1以上是有用的。如果 block 如果设置为false,则将创建更多连接,但使用后将不会保存这些连接。

  • block -- 如果设置为true,则不超过 maxsize 连接将一次使用。当没有可用的连接时,呼叫将被阻塞,直到连接被释放为止。这对于特定的多线程情况是一个有用的副作用,在这种情况下,不希望每个主机使用超过maxsize的连接来防止溢出。

  • headers -- 要包含在所有请求中的头,除非显式给定了其他头。

  • retries -- 重试配置,默认情况下用于此池中的请求。

  • _proxy -- 解析的代理URL,不应直接使用,请参见 urllib3.connectionpool.ProxyManager

  • _proxy_headers -- 带有代理头的字典不应直接使用,请参见 urllib3.connectionpool.ProxyManager

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

ConnectionCls

urllib3.connection.HTTPConnection 的别名

ResponseCls

urllib3.response.HTTPResponse 的别名

close()

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

is_same_host(url)

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

scheme = 'http'
urlopen(method, url, body=None, headers=None, retries=None, redirect=True, assert_same_host=True, timeout=<object object>, pool_timeout=None, release_conn=None, chunked=False, body_pos=None, **response_kw)

从池中获取连接并执行http请求。这是发出请求的最低级别调用,因此需要指定所有原始详细信息。

注解

更常见的是,使用 RequestMethods ,如 request() .

注解

release_conn 只有当 preload_content=False 因为我们想 preload_content=False 在不破坏向后兼容性的情况下,很快就会出现默认行为。

参数
  • method -- http请求方法(如get、post、put等)

  • body -- 要在请求正文中发送的数据(用于创建post请求,请参阅httpconnectionpool.post_url以获得更多便利)。

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

  • retries (Retry, False, or an int.) -- 配置在引发之前允许的重试次数 MaxRetryError 例外。通过 None 在收到响应之前重试。通过A Retry 对象,用于对不同类型的重试进行细粒度控制。传递一个整数以重试多次连接错误,但不传递其他类型的错误。过零表示永不重试。如果 False ,则禁用重试并立即引发任何异常。此外,不会在重定向时引发maxretryerror,而是返回重定向响应。

  • redirect -- 如果为真,则自动处理重定向(状态代码301、302、303、307、308)。每一次重定向都将被视为一次重试。禁用重试也将禁用重定向。

  • assert_same_host -- 如果 True ,将确保池请求的主机一致,否则将引发hostchangederro。当FALSE时,可以在HTTP代理上使用池并请求外部主机。

  • timeout -- 如果指定,则重写此请求的默认超时。它可以是浮点(以秒为单位)或 urllib3.util.Timeout .

  • pool_timeout -- 如果设置并将池设置为block=true,则此方法将为 pool_timeout 秒,如果在此时间段内没有可用连接,则引发EmptyPoolerror。

  • release_conn -- 如果为false,则urlopen调用在收到响应后不会释放回池中的连接(但如果您读取响应的全部内容,例如 preload_content=True )如果不立即预加载响应的内容,这将非常有用。你需要打电话 r.release_conn() 关于回应 r 将连接返回到池中。如果没有,则取 response_kw.get('preload_content', True) .

  • chunked -- 如果为true,urllib3将使用分块传输编码发送正文。否则,urllib3将使用标准内容长度表单发送正文。默认为false。

  • body_pos (int) -- 在重试或重定向时在类似文件的正文中查找的位置。通常不需要设置此值,因为urllib3将在需要时自动填充该值。

  • **response_kw -- 其他参数传递给 urllib3.response.HTTPResponse.from_httplib()

class urllib3.HTTPSConnectionPool(host, port=None, strict=False, timeout=<object object>, 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, assert_hostname=None, assert_fingerprint=None, ca_cert_dir=None, **conn_kw)

基类:urllib3.connectionpool.HTTPConnectionPool

等同于 HTTPConnectionPool 但HTTPS。

当使用 ssl 模块,然后 VerifiedHTTPSConnection 是用来的 can 验证证书,而不是 HTTPSConnection .

VerifiedHTTPSConnection 使用其中之一 assert_fingerprintassert_hostnamehost 以验证连接。如果 assert_hostname 是假的,没有进行验证。

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

ConnectionCls

urllib3.connection.VerifiedHTTPSConnection 的别名

scheme = 'https'
class urllib3.connectionpool.ConnectionPool(host, port=None)

基类:object

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

QueueCls

urllib3.util.queue.LifoQueue 的别名

close()

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

scheme = None