私たちはPython3.5でaiohttpを使ってデータを弾性検索に投稿します。ポストラインは次のとおりです。aiohttp - ソケット転送で致命的な読み取りエラー - TimeoutError
response = await self._http_session.request(method, url,
data = data_fun(), params = params)
は通常、すべてがうまく動作しますが、時間から時間に、次のエラーが発生します。それだけで例外を発生させるとし続ける場合
はFatal read error on socket transport
protocol: <aiohttp.parsers.StreamProtocol object at 0x7fde5eb7eeb8>
transport: <_SelectorSocketTransport fd=21 read=polling write=<polling, bufsize=261832>>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/selector_events.py", line 664, in _read_ready
data = self._sock.recv(self.max_size)
TimeoutError: [Errno 110] Connection timed out
それは、大丈夫だと思います正常に機能します。私たちのケースでは、このエラーにより、post要求が実行されたasyncioタスク全体がフリーズすることになります。
エラーの発生をhttps://github.com/python/asyncio/blob/master/asyncio/selector_events.py#L674に追跡し、その後call_exception_handler
を呼び出しました。
この例外によって_https_session
が無効/使用不可になる可能性があります。新しいものを作成する必要がありますか?それとも何かできることはありますか?
同様
うん、この場合には使用すべきであるとの非同期(async)、それを変更します。完全なコードはhttps://repl.it/CjABにあります。そしてエラーは実際にはちょうどいいはずです私たちのexcept句によって実際にキャッチされています.. – Jendas
あなたはaioesの存在を知っていますか? –