我对各种 python HTTP 库了解如下:
-
Requests https://docs.python-requests.org/en/latest/ does 不支持HTTP/2请求 https://stackoverflow.com/q/44931070/1473320.
-
Hyper https://github.com/python-hyper/hyper确实支持 HTTP/2 请求,但已存档2021 年初 https://github.com/python-hyper/hyper/commit/b77e758f472f00b098481e3aa8651b0808524d84对于新项目来说不是一个好的选择。
-
HTTPX https://www.python-httpx.org/确实支持 HTTP/2,但这种支持是可选,需要安装额外的依赖项,并附带一些关于粗糙边缘的警告 https://www.python-httpx.org/http2/.
-
AIOHTTP https://docs.aiohttp.org/en/stable/index.html does not support HTTP2 yet https://docs.aiohttp.org/en/stable/changes.html?highlight=http2#id532 (as of mid April 2022).
- 该项目的重点也不仅仅在于成为客户端——该软件包还包括服务器。
我知道的另一个主要的 HTTP 请求库是urllib3 https://urllib3.readthedocs.io/en/stable/。这是什么OpenAPI 生成器 https://openapi-generator.tech/生成 python 客户端库时默认使用。
我的问题是:
urrlib3 可以配置为发出 HTTP/2 请求吗?
我在以下位置找不到任何有关 http2 支持的信息文档 https://urllib3.readthedocs.io/en/stable/reference/index.html#,通过我对生成的 OpenAPI 客户端的测试,所有请求都是 HTTP/1.1。如果目前答案是否定的,维护者是否计划支持 HTTP/2?我在项目中找不到任何证据开放式问题 https://github.com/urllib3/urllib3/issues?q=is%3Aissue+%22http%2F2%22.
我在 urllib3 不和谐中询问了这个问题,并得到了答案维护者之一 https://github.com/pquentin这证实了蒂姆·罗伯茨 https://stackoverflow.com/users/1883316/tim-roberts发表评论;
- 正确的 HTTP/2 实现需要 async/await 来利用 HTTP/2 中的主要不同功能,即并行发出请求 https://web.dev/performance-http2/.
- urllib3 特别不打算支持这一点,因为它通常需要重写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)