游泳池管理员

class urllib3.PoolManager(num_pools=10, headers=None, **connection_pool_kw)

基类:urllib3.request.RequestMethods

允许任意请求,同时透明地跟踪必要的连接池。

参数
  • num_pools -- 丢弃最近使用最少的连接池之前要缓存的连接池数。

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

  • **connection_pool_kw -- 其他参数用于创建新的 urllib3.connectionpool.ConnectionPool 实例。

例子::

>>> manager = PoolManager(num_pools=2)
>>> r = manager.request('GET', 'http://google.com/')
>>> r = manager.request('GET', 'http://google.com/mail')
>>> r = manager.request('GET', 'http://yahoo.com/')
>>> len(manager.pools)
2
clear()

清空我们储存的游泳池,让它们全部关闭。

这不会影响飞行中的连接,但在完成后不会重新使用。

connection_from_context(request_context)

得到一个 ConnectionPool 基于请求上下文。

request_context 必须至少包含 scheme 键及其值必须是 key_fn_by_scheme 实例变量。

connection_from_host(host, port=None, scheme='http', pool_kwargs=None)

得到一个 ConnectionPool 基于主机、端口和方案。

如果 port 如果没有给出,它将从 scheme 使用 urllib3.connectionpool.port_by_scheme .如果 pool_kwargs 如果提供,则它将与实例的 connection_pool_kw 变量,用于创建新的连接池(如果需要)。

connection_from_pool_key(pool_key, request_context=None)

得到一个 ConnectionPool 基于提供的池密钥。

pool_key 应该是只包含不可变对象的namedtuple。至少它必须有 schemehostport 领域。

connection_from_url(url, pool_kwargs=None)

类似 urllib3.connectionpool.connection_from_url() .

如果 pool_kwargs 没有提供,需要建造一个新的游泳池, self.connection_pool_kw 用于初始化 urllib3.connectionpool.ConnectionPool .如果 pool_kwargs 如果提供,则改为使用。注意,如果不需要为请求创建新池,则 pool_kwargs 不使用。

proxy = None
urlopen(method, url, redirect=True, **kw)

等同于 urllib3.connectionpool.HTTPConnectionPool.urlopen() 使用自定义跨主机重定向逻辑,只发送 url .

给定的 url 参数必须是绝对的,以便 urllib3.connectionpool.ConnectionPool 可以选择它。

class urllib3.ProxyManager(proxy_url, num_pools=10, headers=None, proxy_headers=None, **connection_pool_kw)

基类:urllib3.poolmanager.PoolManager

行为就像 PoolManager ,但使用https url的connect方法通过定义的代理发送所有请求。

参数
  • proxy_url -- 要使用的代理的URL。

  • proxy_headers -- 包含将发送到代理的标题的字典。在http的情况下,它们是随每个请求一起发送的,而在https/connect的情况下,它们只发送一次。可用于代理身份验证。

例子:
>>> proxy = urllib3.ProxyManager('http://localhost:3128/')
>>> r1 = proxy.request('GET', 'http://google.com/')
>>> r2 = proxy.request('GET', 'http://httpbin.org/')
>>> len(proxy.pools)
1
>>> r3 = proxy.request('GET', 'https://httpbin.org/')
>>> r4 = proxy.request('GET', 'https://twitter.com/')
>>> len(proxy.pools)
3
connection_from_host(host, port=None, scheme='http', pool_kwargs=None)

得到一个 ConnectionPool 基于主机、端口和方案。

如果 port 如果没有给出,它将从 scheme 使用 urllib3.connectionpool.port_by_scheme .如果 pool_kwargs 如果提供,则它将与实例的 connection_pool_kw 变量,用于创建新的连接池(如果需要)。

urlopen(method, url, redirect=True, **kw)

与http(s)connectionpool.urlopen相同, url 必须是绝对的。