gpt4 book ai didi

python - 挑战 : How to send > 1000 HTTP requests in one second with Python

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:45 33 4
gpt4 key购买 nike

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

看完这篇post ,我试过多线程,多进程,twisted(agent.request)和eventlet。但是最大的加速只有6x,这是通过twisted和eventlet实现的,都是使用epoll。

下面的代码展示了带有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 - 挑战 : How to send > 1000 HTTP requests in one second with Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28323508/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com