如何从Flask服务器发送多个请求ASYNC?

时间:2017-06-08 20:53:49

标签: python asynchronous python-requests

所以我正在构建一个Flask API,我有一个GET路由,它基本上会向另一个API发送5个请求来收集我正在合并和返回的数据。

像这样:

results = [requests.get('http://localhost:9000/ss/1'),
            requests.get('http://localhost:9000/ss/2'),
        requests.get('http://localhost:9000/ss/3'),
       requests.get('http://localhost:9000/ss/4'),
            requests.get('http://localhost:9000/ss/5')]

问题是每个请求大约需要2秒钟,因此需要10秒钟才能停机。如何使用不同的线程使所有请求异步,这样整个过程大约需要2秒?然后我如何告诉API在它们全部加载时开始合并它们?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用最初基于我认为和请求的gevent的grequests包(https://pypi.python.org/pypi/grequests)。

代码简单如下:

urls = [url1,url2,...]
#prepare the shells 
shells = (grequests.get(u) for u in urls)
#start all requests at the same time
responses = grequests.map(shells) #will output a list of responses that you can access