Python中的HTTP SSL管线化

3

我正在开发一个Python应用程序,需要在短时间内向一个仅支持SSL的Web服务发送数百个HTTP请求。Python是否支持HTTP Pipelining


1
你是否已经尝试过并发发送这些请求,却发现速度太慢?这里是关于Python中并发http请求的问题列表。 - Piotr Dobrogost
“requests” 看起来很有前途,我会试一下。谢谢! - andrewdotn
2个回答

2

我能够使用Python的grequests模块来解决这个问题。如issue 13所述,它非常简单:

s = requests.session()
rs = [grequests.get(url, session=s) for url in urls]
grequests.map(rs)

1
这个实际上是在做最初请求的HTTP流水线吗?还是只是单独的异步请求,每一个都会产生大量的连接延迟、设置和开销? - nealmcb
@nealmcb 事情可能在我研究这个问题的一年里发生了变化,但我相信,虽然requests没有真正意义上的在一个HTTP连接上同时发送大量请求的流水线处理,但它确实重用了HTTP连接,并且速度非常快,因此解析和持久化响应成为瓶颈。 - andrewdotn
啊 - 我在想保持连接,这通常是默认开启的。鉴于 requests.session(),这似乎是正确的方向,尽管我还没有尝试过。 - nealmcb
是的,虽然你已经找到了一个令人满意的解决方案来解决你自己最初的问题,但这对于那些真正寻求实际HTTP流水线技术的人来说并没有太大帮助。 - Mumbleskates

-1
如果您想要进行实际的流水线处理,此网站有一个函数可以为您完成。经过Wireshark测试,它允许在单个连接上发送请求而无需等待响应。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接