python 2.7中的HTTP 2请求

时间:2016-01-02 21:38:11

标签: python http http2

在python中向HTTP / 1和HTTP / 2发出请求是否有任何区别。

我可以在python中进行HTTP / 1.x调用,如

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

python是否支持默认创建HTTP / 2,或者我应该添加任何额外的内容。

3 个答案:

答案 0 :(得分:5)

正如其他人在问题的评论中提到的那样,requests库不支持HTTP / 2.

来自requests图书馆documentation

  

请求允许您发送有机草草 HTTP / 1.1 请求,而无需手工劳动。

截至目前,我所知道的唯一一个Python的HTTP / 2客户端是hyper,引用了文档:

  

支持Python 3.4和Python 2.7.9,可以说HTTP / 2和HTTP / 1.1

答案 1 :(得分:2)

作为参考,从2019年起,另一个支持HTTP / 2的库为HTTPX

HTTPX是用于Python 3的功能齐全的HTTP客户端,它提供同步和异步API,并支持HTTP / 1.1和HTTP / 2。

这至少需要Python 3.6。但是,在撰写2020年时,Python 2已经停产,因此Python 3.6对任何用户都应该可以。

答案 2 :(得分:0)

hyperrequests模块一起使用。

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

https://hyper.readthedocs.io/en/latest/quickstart.html#requests-integration