aiohttp自述文件说:
如果您想为 aiohttp 客户端使用超时,请使用标准 asyncio 方法:yield from asyncio.wait_for(client.get(url), 10)
但这并不能处理 DNS 超时,我猜这些超时是由操作系统处理的。with aiohttp.Timeout
也不处理操作系统 DNS 查找。
在asyncio repo上进行了讨论,但没有最终结论,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)