aiohttp の readme には次のように書かれています。
aiohttp クライアントにタイムアウトを使用する場合は、標準の asyncio アプローチを使用してください: yield from asyncio.wait_for(client.get(url), 10)
しかし、それはOSによって処理されるDNSタイムアウトを処理しません。また、with aiohttp.Timeout
OS DNS ルックアップも処理しません。
asyncio リポジトリで最終的な結論なしに議論があり、 Saghul はaiodnsを作成しましたが、それを aiohttp に混在させる方法と、それが機能を許可するかどうかはわかりませんasyncio.wait_for
。
テストケース (私の Linux ボックスでは 20 秒かかります):
async def fetch(url):
url = 'http://alicebluejewelers.com/'
with aiohttp.Timeout(0.001):
resp = await aiohttp.get(url)