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秒就重新发送一个新的请求,直到该请求成功。那应该如何写?