繁体   English   中英

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

[英]What is the fastest way to send 10,000 HTTP requests in Python 2.7?

每秒向服务器发送大约5个请求。 我需要每秒发送大约40个请求。 服务器没有限制我的请求(我已经运行了10个该Python脚本实例,并且可以正常工作),我的互联网也没有限制请求。

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

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

您可以/应该使用扭曲的。 treq基于扭曲使得它非常easy.since其完全异步无请求/秒将是非常高的,如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

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

您需要知道一件事,即您使用哪种方法处理10000个HTTP请求,都有打开文件描述符限制,在Linux中基本上设置为1000。 这意味着您只能有1000个并发TCP连接。 但是,您可以从Linux中的/etc/security/limits.conf配置中增加此值

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM