現在、ファイルをダウンロードするための複数の「非同期」要求を行うためにスレッドを使用しています。 asyncio
を使用して、Python 3+にアップグレードしたことがわかりました。http.clientでasyncioを使用できますか?
ssl.SSLContext(protocol = ssl.PROTOCOL_TLS)
を使用し、PEMファイルとKEYファイルを渡す必要があります。
私のhttp.client
スクリプトをasyncio
と一緒に使用するか、http.client
の機能をaiohttp
の機能に変換する必要がありますか?
ボーナス:
いずれかの方法で、誰かがasync def
と@asyncio.coroutine
の間で選択する方法を説明できますか?
は、Infoのサポート:
私のプログラムは、今私たちの最後のシーケンシャルクエリだったものとは、約15の同時要求と並行して動作することを考えるとかなりよく実行されます。しかし、私が取り組んでいる別のプログラムでは、500件のリクエストが並行して送られています。私はthreading.Semaphore()
を使用することができましたが、私は大量の要求に対してはasyncio
が最適であると読んでいます。
初めてそれをいじり、そう...
私はfollowingを読んでいる(と同様、それの80%は、非ブロッキングソケットのソケット接続のように思える、とのみ適用セクションでは、「調整していますコルーチン ")。
ボーナス:あなたのPythonバージョンは 'async' /' await'構文をサポートしていますか?それを使ってください。デコレータはその構文が整うまでは途中降機でした。 – deceze
はい、asyncioを使用し、aiohttpを使用します。後者はSSLをうまくサポートする必要があります( 'ssl.SSLContext()'をTCPConnectorに渡してClientSessionに渡すことができます)。 –
Python 3.5または(好ましくは)3.6を使用すれば、どこでも 'async' /' await'を使うことができます。 '@ asyncio.coroutine'については忘れてしまいます。 –