2017-06-08 5 views
0

私はFlask APIを構築していますが、基本的に5つのリクエストを別のAPIに送信して、マージして戻すデータを収集するGETルートがあります。そのようFlaskサーバーから複数のリクエストASYNCを送信する方法はありますか?

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に指示するにはどうすればよいですか?

ご迷惑をおかけして申し訳ありません。

答えて

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 
関連する問題