python异步爬虫aiohttp怎么为每个请求设置超时

python异步爬虫aiohttp怎么为每个请求设置超时

刚接触异步,遇到许多地方还不理解

异步爬虫中遇到请求慢时要设置超时访问,根据度娘给的设置了Timeout = aiohttp.ClientTimeout(total=3),个人理解每个请求超过3秒单个请求就会抛出超时异常,这里设置了20个请求。如下代码:

1
2
3
4
5
6
7
8
9
async def fetch(session, url):
    try:
        Timeout = aiohttp.ClientTimeout(total=3)
        async with session.get(url, timeout=Timeout) as response:
            this_text = await response.text(encoding='gb18030')
            if this_text:
                print('请求成功')
    except Exception as e:
        print('超时重试')

结果运行后发现才成功请求了3个,3秒后剩下还没处理的请求直接超时异常,如下代码:
在这里插入图片描述
难道total=3设置的是全部会话的时间?
可我的需求是:当所有请求都没有响应时,用户等待的时间每超过3秒就重新发送一个新的请求,直到该请求成功。那应该如何写?