Connection Pools¶
- 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)¶
Bases:
ConnectionPool
,RequestMethods
Thread-safe connection pool for one host.
- Parameters:
host (str) – Host used for this HTTP Connection (e.g. “localhost”), passed into
http.client.HTTPConnection
.port (int | None) – Port used for this HTTP Connection (None is equivalent to 80), passed into
http.client.HTTPConnection
.timeout (_TYPE_TIMEOUT | None) – Socket timeout in seconds for each individual connection. This can be a float or integer, which sets the timeout for the HTTP request, or an instance of
urllib3.util.Timeout
which gives you more fine-grained control over request timeouts. After the constructor has been parsed, this is always a urllib3.util.Timeout object.maxsize (int) – Number of connections to save that can be reused. More than 1 is useful in multithreaded situations. If
block
is set to False, more connections will be created but they will not be saved once they’ve been used.block (bool) – If set to True, no more than
maxsize
connections will be used at a time. When no free connections are available, the call will block until a connection has been released. This is a useful side effect for particular multithreaded situations where one does not want to use more than maxsize connections per host to prevent flooding.headers (Mapping[str, str] | None) – Headers to include with all requests, unless other headers are given explicitly.
retries (Retry | bool | int | None) – Retry configuration to use by default with requests in this pool.
_proxy (Url | None) – Parsed proxy URL, should not be used directly, instead, see
urllib3.ProxyManager
_proxy_headers (Mapping[str, str] | None) – A dictionary with proxy headers, should not be used directly, instead, see
urllib3.ProxyManager
**conn_kw (Any) – Additional parameters are used to create fresh
urllib3.connection.HTTPConnection
,urllib3.connection.HTTPSConnection
instances._proxy_config (ProxyConfig | None)
**conn_kw
- ConnectionCls¶
alias of
HTTPConnection
- close()¶
Close all pooled connections and disable the pool.
- Return type:
None
- is_same_host(url)¶
Check if the given
url
is a member of the same host as this connection pool.
- 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)¶
Get a connection from the pool and perform an HTTP request. This is the lowest level call for making a request, so you’ll need to specify all the raw details.
Note
More commonly, it’s appropriate to use a convenience method such as
request()
.Note
release_conn will only behave as expected if preload_content=False because we want to make preload_content=False the default behaviour someday soon without breaking backwards compatibility.
- Parameters:
method (str) – HTTP request method (such as GET, POST, PUT, etc.)
url (str) – The URL to perform the request on.
body (bytes | IO[Any] | Iterable[bytes] | str | None) – Data to send in the request body, either
str
,bytes
, an iterable ofstr
/bytes
, or a file-like object.headers (Mapping[str, str] | None) – Dictionary of custom headers to send, such as User-Agent, If-None-Match, etc. If None, pool headers are used. If provided, these headers completely replace any pool-specific headers.
retries (
Retry
, False, or an int.) –Configure the number of retries to allow before raising a
MaxRetryError
exception.If
None
(default) will retry 3 times, seeRetry.DEFAULT
. Pass aRetry
object for fine-grained control over different types of retries. Pass an integer number to retry connection errors that many times, but no other types of errors. Pass zero to never retry.If
False
, then retries are disabled and any exception is raised immediately. Also, instead of raising a MaxRetryError on redirects, the redirect response will be returned.redirect (bool) – If True, automatically handle redirects (status codes 301, 302, 303, 307, 308). Each redirect counts as a retry. Disabling retries will disable redirect, too.
assert_same_host (bool) – If
True
, will make sure that the host of the pool requests is consistent else will raise HostChangedError. WhenFalse
, you can use the pool on an HTTP proxy and request foreign hosts.timeout (Timeout | float | _TYPE_DEFAULT | None) – If specified, overrides the default timeout for this one request. It may be a float (in seconds) or an instance of
urllib3.util.Timeout
.pool_timeout (int | None) – If set and the pool is set to block=True, then this method will block for
pool_timeout
seconds and raise EmptyPoolError if no connection is available within the time period.preload_content (bool) – If True, the response’s body will be preloaded into memory.
decode_content (bool) – If True, will attempt to decode the body based on the ‘content-encoding’ header.
release_conn (bool | None) – If False, then the urlopen call will not release the connection back into the pool once a response is received (but will release if you read the entire contents of the response such as when preload_content=True). This is useful if you’re not preloading the response’s content immediately. You will need to call
r.release_conn()
on the responser
to return the connection back into the pool. If None, it takes the value ofpreload_content
which defaults toTrue
.chunked (bool) – If True, urllib3 will send the body using chunked transfer encoding. Otherwise, urllib3 will send the body using the standard content-length form. Defaults to False.
body_pos (int) – Position to seek to in file-like body in the event of a retry or redirect. Typically this won’t need to be set because urllib3 will auto-populate the value when needed.
response_kw (Any)
- Return type:
- 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)¶
Bases:
HTTPConnectionPool
Same as
HTTPConnectionPool
, but HTTPS.HTTPSConnection
uses one ofassert_fingerprint
,assert_hostname
andhost
in this order to verify connections. Ifassert_hostname
is False, no verification is done.The
key_file
,cert_file
,cert_reqs
,ca_certs
,ca_cert_dir
,ssl_version
,key_password
are only used ifssl
is available and are fed intourllib3.util.ssl_wrap_socket()
to upgrade the connection socket into an SSL socket.- Parameters:
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_fingerprint (str | None)
ca_cert_dir (str | None)
conn_kw (Any)
- ConnectionCls¶
alias of
HTTPSConnection
- class urllib3.connectionpool.ConnectionPool(host, port=None)¶
Bases:
object
Base class for all connection pools, such as
HTTPConnectionPool
andHTTPSConnectionPool
.Note
ConnectionPool.urlopen() does not normalize or percent-encode target URIs which is useful if your target server doesn’t support percent-encoded target URIs.
- close()¶
Close all pooled connections and disable the pool.
- Return type:
None
- urllib3.connectionpool.connection_from_url(url, **kw)¶
Given a url, return an
ConnectionPool
instance of its host.This is a shortcut for not having to parse out the scheme, host, and port of the url before creating an
ConnectionPool
instance.- Parameters:
url (str) – Absolute URL string that must include the scheme. Port is optional.
**kw (Any) – Passes additional parameters to the constructor of the appropriate
ConnectionPool
. Useful for specifying things like timeout, maxsize, headers, etc.
- Return type:
Example:
>>> conn = connection_from_url('http://google.com/') >>> r = conn.request('GET', '/')