2017-03-20 5 views
0

2.7と3.xで動作するように非同期の残りの呼び出しを行う必要があります。私はgrequestsのためのいくつかの提案を見てきましたが、ドキュメントはかなり欠けている。私のデフォルトコードは次のようになります:実際に非同期の残りの呼び出しを行うことはできますか?

import requests 

for i in range(1, 10):   
    x = requests.post('some_endpoint', data={"a":i}) 

うまく動作しますが、非同期ではありません。私はgrequestsを使用してみましたが、私が見つけた唯一の使用法は次のようになります。

import grequests 

for i in range(1, 10): 
    x = grequests.post('some_endpoint', data={"a":i}) 
    grequests.map([x]) 

と、これは動作しますが、そのは非同期に動作していません。

私は何か間違っているのですか、またはgrequestは私が推測していたように振る舞いませんか? 2.7と3.xで使える他のライブラリがありますか?

+1

grequestsの動作に関係なく、make_requestに対して非同期の非同期呼び出しを10回行っています。 – castis

+0

make_requestの呼び出しを削除しました。まだ非同期動作を取得していません。 – user3715648

+0

http://docs.python-requests.org/ja/latest/user/advanced/#blocking-or-non-blocking –

答えて

1

grequests.mapを使用してすべてのリクエストを一度に送信する必要があります。すべてのリクエストが完了するまで返されないためです。

import grequests 

req = [] 
for i in range(1, 10): 
    req.append(grequests.get('https://www.google.com')) 

grequests.map(req) 
for r in req: 
    print r.response 
関連する問題