0%

python | timeout

参考资料

这一章节非常非常关键和重要。

一个 aiohttp 请求,通常长这个样子。

1
2
3
4
5
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('http://httpbin.org/get') as resp:
print(resp.status)
print(await resp.text())

这里一共有两个 await

一个是 session.get('http://httpbin.org/get'),等待返回数据
一个是 await resp.text(),等待返回的数据,向缓冲区写入

为了更灵活,改成了

1
2
3
4
session = aiohttp.ClientSession()
response = await session.get(url, params=params, headers=headers, timeout=timeout, proxy=proxy)
text = await response.text()
await session.close()

但是,跑了一段时间发现,经常有 timeout 发生在 await session.close() 这句话。

经过

上的指示,必须按照最开始的写法才行,改成那个写法,果然好了,但是,原因并没有说明。

请我喝杯咖啡吧~