【发布时间】:2016-12-17 03:51:36
【问题描述】:
我有一个 Python REST 服务,我想使用 HTTP2 来提供它。我当前的服务器设置是nginx -> Gunicorn。换句话说,nginx(端口 443 和 80 重定向到端口 443)作为反向代理运行并将请求转发到 Gunicorn(端口 8000,无 SSL)。 nginx 以 HTTP2 模式运行,我可以通过使用 chrome 并在向服务器发送简单的 GET 后检查“协议”列来验证这一点。但是,Gunicorn 报告说它收到的请求是 HTTP1.0。此外,我无法在此列表中找到它:
https://github.com/http2/http2-spec/wiki/Implementations
所以,我的问题是:
- 是否可以使用 HTTP2 为 Python (Flask) 应用程序提供服务?如果是,哪些服务器支持它?
- 就我而言(一个反向代理服务器和一个服务于实际 API),哪个服务器必须支持 HTTP2?
我想使用 HTTP2 的原因是因为在某些情况下我需要同时执行数千个请求,我很想看看 HTTP2 的多路复用请求功能是否可以加快处理速度。使用 HTTP1.0 和 Python 请求作为客户端,每个请求大约需要 80 毫秒,这是不可接受的。另一种解决方案是批量/批处理我的 REST 资源并通过单个请求发送多个。是的,这个想法听起来不错,但我真的很想看看 HTTP2 是否可以加快速度。
最后,我应该提到的是,对于客户端,我使用带有 Hyper http2 适配器的 Python 请求。
【问题讨论】:
标签: python rest nginx gunicorn http2