2017-07-14 29 views
0

私は数多くの質問と回答を見てきましたが、私にとってはうまくいきません。 PythonでAJAXのような機能を実現する方法はありますか?AJAXのようなノンブロッキングの非同期非同期Pythonリクエスト

のは、あなたがこのセットアップを持っているとしましょう:あなたは、サーバーの応答を得たまでrequests.getブロックのコードの実行として

url = "http://httpbin.org/delay/5" 
print(requests.get(url)) 
foo() 

foo()がトリガされません。 JavaScriptで

は、例えば、スクリプトが動作し続けます。

var requests = { 
    get: function(url, callback) { 
     var xhttp = new XMLHttpRequest(); 
     xhttp.onreadystatechange = function() { 
      if (this.readyState == 4 && this.status == 200) { 
       callback(this); 
      } 
     }; 
     xhttp.open("GET", url, true); 
     xhttp.send(); 
    } 
} 

function response_goes_through_here(r) { 
    console.log(r.responseText); 

} 

var url = "http://httpbin.org/delay/5" 
requests.get(url, response_goes_through_here) 
foo() 

私はgrequestsを試してみましたが、全体のキューが完了するまで、それはまだハングアップします。

答えて

0

Python 3を使用できる場合は、aiohttpをご覧ください。

async with aiohttp.ClientSession() as session: 
    async with session.get('https://api.github.com/events') as resp: 
     print(resp.status) 
     print(await resp.text() 
+0

スレッドをブロックしますか?ほとんどの例では、応答が受信されるまでコード実行を停止していました。 –