诊断HTTP请求速度

时间:2014-02-03 23:08:44

标签: python python-requests

我在100,000到500,000个URL之间的任何地方发出头部请求,以返回大小和HTTP状态代码。我尝试了四种不同的方法:线程池,异步扭曲客户端,grequests实现和基于concurrent.futures的解决方案。在与此类似的previous question中,线程池实现据说在6到10分钟内完成。尝试使用确切的代码并提供100,000个URL的虚拟列表需要在我的计算机上运行4个小时。我的扭曲解决方案(不同于链接问题中提到的解决方案)同样需要大约3.5小时才能完成,与concurrent.futures解决方案相同。

我相对自信我已正确编写了实现,特别是在复制和粘贴前一个示例中的代码的情况下。如何诊断减速发生的位置?我的猜测是,它是在建立连接时,但我不知道如何证明这一点或修复它,如果它是一个问题。我很确定它不是CPU绑定问题,因为100,000个URL之后的CPU时间仅为3分钟。任何帮助,以确定如何诊断问题,反过来修复将非常感激。

更多信息:

  • 使用请求发出请求,或使用twisted进行treq。
  • 将结果附加到列表(关闭垃圾编译器)或a pandas dataframe似乎没有速度差异。
  • 我已经尝试过4到200个工人/线程 在我的各种测试中,15似乎是最佳的。
  • 我使用的机器有16个核心和一个高速(100 MBPS) 互联网连接。

0 个答案:

没有答案