<p><strong><a href="https://github.com/svanoort/python-client-benchmarks">I wrote you a full benchmark</a></strong>,使用gUnicorn/meinheld+nginx(用于性能和HTTPS)支持的小型Flask应用程序,查看完成10000个请求需要多长时间。测试在AWS中对一对卸载的c4.1大型实例运行,服务器实例没有CPU限制</p>
<p><strong>TL;DR summary:</strong>如果你在做大量的网络工作,请使用PyCurl,否则请使用requests。PyCurl完成小请求的速度是请求的2-3倍,直到您遇到大请求的带宽限制(这里约为520 MBit或65 MB/s),并且使用的CPU功率减少了3到10倍。这些数字比较了连接池行为相同的情况;默认情况下,PyCurl使用连接池和DNS缓存,而请求不使用连接池和DNS缓存,因此一个简单的实现的速度将是原来的10倍</p>
<p><a href="https://i.stack.imgur.com/be4Xs.png"><img src="https://i.stack.imgur.com/be4Xs.png" alt="Combined-chart-RPS"/></a>
<a href="https://i.stack.imgur.com/TD3ok.png"><img src="https://i.stack.imgur.com/TD3ok.png" alt="CPU Time by request size detailed"/></a></p>
<p><a href="https://i.stack.imgur.com/nPend.png"><img src="https://i.stack.imgur.com/nPend.png" alt="Just HTTP throughput"/></a>
<a href="https://i.stack.imgur.com/1w1qd.png"><img src="https://i.stack.imgur.com/1w1qd.png" alt="Just HTTP RPS"/></a></p>
<p><strong>注意,由于涉及数量级,双对数图仅用于下图</strong>
<a href="https://i.stack.imgur.com/KmqkF.png"><img src="https://i.stack.imgur.com/KmqkF.png" alt="HTTP & HTTPS throughput"/></a>
<a href="https://i.stack.imgur.com/bSKul.png"><img src="https://i.stack.imgur.com/bSKul.png" alt="HTTP & HTTPS RPS"/></a></p>
<ul>
<li>在重用连接时,pycurl发出请求大约需要73 CPU微秒</li>
<li>请求在重用连接时发出请求大约需要<strong>526 CPU微秒</li>
<li>pycurl大约需要165 CPU微秒来打开一个新连接并发出一个请求(无连接重用),或者大约92微秒来打开</li>
<li>请求大约需要<strong>1078</strong>CPU微秒才能<em>打开一个新连接</em>并发出请求(无连接重用),或大约552微秒才能打开</li>
</ul>
<p><a href="https://github.com/svanoort/python-client-benchmarks">Full results are in the link</a>,以及基准方法和系统配置</p>
<p><strong>注意事项:</strong>尽管我努力确保以科学的方式收集结果,但它只测试一种系统类型和一种操作系统,以及有限的性能子集,尤其是HTTPS选项</p>