0

我需要实现一个脚本来尽快发送 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 倍。有没有更好的方法来加快这个过程?

4

0 回答 0