【发布时间】:2015-08-16 05:53:51
【问题描述】:
考虑以下情况:有一个慢速服务器使用大约 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
任何人都可以帮助我弄清楚为什么加速如此低?还有其他机制可以让它更快吗?
【问题讨论】:
-
目前需要多长时间?
-
看看这对你有没有帮助:stackoverflow.com/questions/2632520/…
-
1000 个请求,每个请求 200 毫秒 = 3.3 分钟。我不明白你为什么要超载你的服务器。为什么是 1000 ?为什么不是 1M?
-
@JérômeRadix,其实我的应用程序既是服务器又是客户端,它会向后端服务器发送一些类型的请求。目前1000还可以,以后1M也可以。
-
@Jacky 如果是挑战兄弟,你应该发布一份工作。 SO是为了消除疑虑