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.

Btw, at this moment it doesn't support HTTP/2 protocol (actually we often doesn't need its Server Push or Multi resource stream features). But sometime the API endpoint only supports HTTP/2 like Akamai Load Balacing service.

The hero is new library named hyper, it has been developing to support full HTTP/2 specs. But if all we need is requesting single request to a HTTP/2 server. It works like a charm.


$ pip install requests
$ pip install hyper


import requests
from hyper.contrib import HTTP20Adapter
s = requests.Session()
s.mount('https://', HTTP20Adapter())
r = s.get('')

This mean any url has prefix https:// will be hanlded by HTTP20Adaper of hyper library


If you run above example, you will see the result


While you expected it would auto-follow redirect to the page

We can fix it by using the newer version than 0.7.0 to fix the header key bytestring issue

$ pip uninstall hyper
$ pip install

Then try it out !!!