Is there any difference in making request to HTTP/1 and HTTP/2 in python.
I can make HTTP/1.x calls in python like
url = 'http://someURL'
values = {'param1' : 'key',
'param2' : 'key2'}
data = urllib.urlencode(values)
print data
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
print the_page
Is python supporting making HTTP/2 by default or should I add anything extra.
The sophisticated http client in Python is requests , it has simple API but powerful features. You can use it for crawling, sending request to third-party API or writing tests.
The first ASGI server implementation, originally developed to power Django Channels, is the Daphne webserver. It is run widely in production, and supports HTTP/1.1, HTTP/2, and WebSockets.
The Requests library is available for both Python 2 and Python 3 from the Python Package Index (PyPI), and has the following features: Allows you to send HTTP/1.1 PUT, DELETE, HEAD, GET and OPTIONS requests with ease.
For reference, as of 2019, another library supporting HTTP/2 is HTTPX.
HTTPX is a fully featured HTTP client for Python 3, which provides sync and async APIs, and support for both HTTP/1.1 and HTTP/2.
This requires at least Python 3.6. However, at the time of writing in 2020, Python 2 is already EOL, so Python 3.6 should be okay for any users.
As others mentioned in the comments to the question the requests
library does not support HTTP/2.
From the requests
library documentation:
Requests allows you to send organic, grass-fed HTTP/1.1 requests, without the need for manual labor.
As of now the only HTTP/2 client for Python I know of is hyper
, which quoting from the docs:
supports Python 3.4 and Python 2.7.9, and can speak HTTP/2 and HTTP/1.1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With