挑战:如何使用Python在1秒钟内发送> 1000个HTTP请求
请考虑以下情况:有一台速度较慢的服务器,它使用大约 来处理请求(不包括网络传输时间)。现在,我们需要每秒发送一堆请求。
阅读这篇文章后,我尝试了多线程,多进程,扭曲(agent.request)和eventlet。但是,最大的加速只有
,这是通过使用epoll的twisted和eventlet实现的。
以下代码显示了带有eventlet的测试版本,
import eventleteventlet.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 grequestsimport 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