如何在Python 2.7中尽快发送HTTP请求

时间:2015-01-12 03:48:45

标签: python python-requests eventlet

我需要实现一个脚本来尽快发送HTTP请求。我尝试过 eventlet + requests 。如下所示的代码,请注意我已将超时值设置为 1秒

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

import requests

params = {
    'token': '???',
    'data': '???'
}

def request_s(session, *args, **kwargs):
    try:
        return session.request(*args, **kwargs)
    except:
        pass  # ignore first
    finally:
        pass

def send():
    pile = eventlet.GreenPile(30)
    s = requests.Session()
    for i in range(100):
        pile.spawn(request_s, s, 'https://api.???.com/', params=params, timeout=1)
    # Fetch response
    for response in pile:
        if response:
            print response.elapsed, response.text

if __name__ == '__main__':
    send()

但是我遇到了一个奇怪的问题,那就是一些请求的耗用时间将超过1秒。最大的一个是 11秒。为什么呢?

在这种情况下,eventlet +请求仅比串行模型快4~6倍。有没有更好的方法来加快这个过程?

0 个答案:

没有答案