urllib3
, a powerful HTTP client for Python, has limited support for HTTP/2. The primary focus of urllib3
has been on HTTP/1.1, which is the most widely used version of the HTTP protocol.
HTTP/2 is a major revision of the HTTP network protocol, used by the World Wide Web. It was developed by the HTTP Working Group of the Internet Engineering Task Force (IETF) and was published in May 2015. HTTP/2 brings several improvements over HTTP/1.1, such as reduced latency by enabling full request and response multiplexing, more efficient parsing of messages, and decreased protocol overhead via header field compression.
The support for HTTP/2 in urllib3
is not built-in, but there is a third-party library called hyper
which was an early adapter of HTTP/2 support for Python. The hyper
library is based on h2
, a HTTP/2 state-machine library. However, hyper
is not as actively maintained, and it may not be compatible with the latest versions of Python or urllib3
.
For those looking for HTTP/2 support in Python, it is often recommended to use httpx
, which is a fully featured HTTP client for Python 3, which provides sync and async APIs, and has first-class support for HTTP/1.1 and HTTP/2.
Here's a simple example of how to use httpx
to make an HTTP/2 request:
import httpx
# Create a client that uses HTTP/2
with httpx.Client(http2=True) as client:
response = client.get('https://www.http2bin.org/get')
print(response.http_version) # Should print HTTP/2
print(response.json()) # JSON response from http2bin.org
If you specifically want to use urllib3
and still require HTTP/2 support, you would need to look for a different solution or consider contributing to the urllib3
project to help add HTTP/2 support.
Keep in mind that the state of libraries can change, and it's always a good idea to check the latest documentation or release notes for updates on features like HTTP/2 support.