Jac*_*cky 3 python python-requests
请考虑以下情况:有一个慢速服务器使用大约200毫秒来处理请求(不包括网络传输时间).现在,我们需要每秒发送一堆请求.
阅读这篇文章后,我尝试了多线程,多进程,twisted(agent.request)和eventlet.但最大的加速只有6倍,这是通过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
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我明确为什么加速这么低?有没有其他机制可以使它更快?
我知道这是一个老帖子,但有人可能仍然需要这个.
如果你想进行负载测试但想要使用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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5290 次 |
最近记录: |