Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTP 2 request in python 2.7

Tags:

python

http

http2

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.

like image 470
Johnykutty Avatar asked Jan 02 '16 21:01

Johnykutty


People also ask

Does Python requests support HTTP 2?

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.

Does Django support http2?

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.

Does Python 3 have requests?

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.


2 Answers

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.

like image 65
Czechnology Avatar answered Sep 20 '22 19:09

Czechnology


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

like image 31
Adam Romanek Avatar answered Sep 19 '22 19:09

Adam Romanek