PoolManager =========== .. automodule:: urllib3.poolmanager A pool manager is an abstraction for a collection of :doc:`ConnectionPools `. If you need to make requests to multiple hosts, then you can use a :class:`.PoolManager`, which takes care of maintaining your pools so you don't have to. .. doctest :: >>> from urllib3 import PoolManager >>> manager = PoolManager(10) >>> r = manager.request('GET', 'http://example.com') >>> r.headers['server'] 'ECS (iad/182A)' >>> r = manager.request('GET', 'http://httpbin.org/') >>> r.headers['server'] 'gunicorn/18.0' >>> r = manager.request('POST', 'http://httpbin.org/headers') >>> r = manager.request('HEAD', 'http://httpbin.org/cookies') >>> len(manager.pools) 2 >>> conn = manager.connection_from_host('httpbin.org') >>> conn.num_requests 3 The API of a :class:`.PoolManager` object is similar to that of a :doc:`ConnectionPool `, so they can be passed around interchangeably. The PoolManager uses a Least Recently Used (LRU) policy for discarding old pools. That is, if you set the PoolManager ``num_pools`` to 10, then after making requests to 11 or more different hosts, the least recently used pools will be cleaned up eventually. Cleanup of stale pools does not happen immediately but can be forced when used as a context manager. .. doctest :: >>> from urllib3 import PoolManager >>> with PoolManager(10) as manager: ... r = manager.request('GET', 'http://example.com') ... r = manager.request('GET', 'http://httpbin.org/') ... len(manager.pools) ... 2 >>> len(manager.pools) 0 You can read more about the implementation and the various adjustable variables within :class:`~urllib3._collections.RecentlyUsedContainer`. API --- .. autoclass:: PoolManager :inherited-members: ProxyManager ============ :class:`.ProxyManager` is an HTTP proxy-aware subclass of :class:`.PoolManager`. It produces a single :class:`~urllib3.connectionpool.HTTPConnectionPool` instance for all HTTP connections and individual per-server:port :class:`~urllib3.connectionpool.HTTPSConnectionPool` instances for tunnelled HTTPS connections. Example using proxy authentication: :: >>> headers = urllib3.make_headers(proxy_basic_auth='myusername:mypassword') >>> proxy = urllib3.ProxyManager('http://localhost:3128', proxy_headers=headers) >>> r = proxy.request('GET', 'http://example.com/') >>> r.status 200 API --- .. autoclass:: ProxyManager