挑战:如何使用Python在1秒钟内发送> 1000个HTTP请求

请考虑以下情况:有一台速度较慢的服务器,它使用大约 来处理请求(不包括网络传输时间)。现在,我们需要每秒发送一堆请求。

阅读这篇文章后,我尝试了多线程,多进程,扭曲(agent.request)和eventlet。但是,最大的加速只有

,这是通过使用epoll的twisted和eventlet实现的。

以下代码显示了带有eventlet的测试版本,

import eventlet

eventlet.monkey_patch(all=False, socket=True)

import requests

def send():

pile = eventlet.GreenPile(30)

for i in range(1000):

pile.spawn(requests.get, 'https://api.???.com/', timeout=1)

for response in pile:

if response:

print response.elapsed, response.text

任何人都可以帮助我弄清楚为什么加速如此之低?还有其他任何机制可以使其更快吗?

回答:

我知道这是一则旧文章,但有人可能仍需要它。

如果要进行负载测试但要使用python,则应使用locust之类的工具:http :

//locust.io/

这是我的解决方案,它在10秒内产生10,000个请求:

sudo pip install grequests

import grequests

import time

start_time = time.time()

# Create a 10000 requests

urls = ['http://www.google.co.il']*10000

rs = (grequests.head(u) for u in urls)

# Send them.

grequests.map(rs)

print time.time() - start_time # Result was: 9.66666889191

以上是 挑战:如何使用Python在1秒钟内发送> 1000个HTTP请求 的全部内容, 来源链接: utcz.com/qa/407933.html

回到顶部