L-codes / Neo-reGeorg

Neo-reGeorg is a project that seeks to aggressively refactor reGeorg
GNU General Public License v3.0
2.89k stars 446 forks source link

请求使用httpx替代requests,使用http2的多路复用 #53

Open ilpl opened 2 years ago

ilpl commented 2 years ago

httpx 支持http2, pip3 install httpx pip3 install 'httpx[http2]' requests.Session() 替换成 httpx.Client(http2=True)

使用http2的多路复用减少握手.

L-codes commented 2 years ago

httpx.Client(http2=True) 会向下兼容 http1.0 http1.1 等吗?

L-codes commented 2 years ago

感谢你的建议,由于下面的几点分析,这个性能效果并不会很明显,由于目前项目追求稳定性,暂不会加入,但后续测试http2能够稳定运行后加入支持~

  1. requests http1.1时,支持Keep-Alive的方式减少tcp握手,所以http2的多路复用并不会给 neoreg 减少握手。
  2. http2 的 header 压缩可以减少一点上下行宽带,但是效果不大。
  3. http2 的多路复用,支持异步的请求方式,但是 neoreg write/read 行为是顺序的,或许能提高 write/read 的实时性。