在Python 2.7中发送10,000个HTTP请求的最快方法是什么?

时间:2017-04-18 07:40:51

标签: python python-2.7

每秒向服务器发送大约5个请求。我需要每秒发送大约40个请求。服务器不限制我的请求(我已经运行了10个这个Python脚本的实例并且它已经运行了)并且我的互联网不限制请求。

这是我的代码,每秒限制我的请求。

是否可以让我的Python脚本发送更多请求?

3 个答案:

答案 0 :(得分:1)

你可以/应该使用扭曲。基于twisted的treq使它非常容易。因为它完全异步,所以请求数/秒数不会很高,比如1000甚至更多。

from treq import get
from twisted.internet import reactor


# This method is called whenever a response is recieved
def done(response):
   if response.code == 200:
       # do something with response
   reactor.stop()

for i in range(100000):
    get("http://www.somesite.com").addCallback(done)

reactor.run()

使用twisted的异步编程的学习曲线很高但最终会得到非常好的结果。如需进一步参考,请查看http://treq.readthedocs.io/en/latest/api.html

答案 1 :(得分:0)

我同意@anekix,使用twisted是最好的方法。

你需要知道一件事,你使用的方法有10000个HTTP请求,有开放文件描述符限制,在Linux中基本上设置为1000。 这意味着您只能拥有1000个并发TCP连接。但是,您可以从Linux

中的配置/etc/security/limits.conf增加此值

答案 2 :(得分:-1)

为什么不使用Scapy数据包通过sendp(第2层)生成流量,它具有非常好的性能。生成不同的数据包也非常容易

sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1")