今天在练习异步爬取视频时,程序报错:aiohttp.client_exceptions.ClientPayloadError: Response payload is not completed。
查了很多资料,发现这个异常一般是由于异步请求的响应体没有完整接收导致的。
可以尝试下面的两种解决方案:
尝试增加响应体接收的超时时间。
关闭异步请求 session 后重试。代码如下:
async with aiohttp.ClientSession() as session:
try:
response = await session.get(url=url)
# Do something with response
except aiohttp.ClientPayloadError:
await session.close()
session = aiohttp.ClientSession()
response = await session.get(url=url)
# Do something with response
这个方法会在遇到 aiohttp.client_exceptions.ClientPayloadError
异常时关闭当前的 session,然后重新创建一个新的 session 并发送请求。
希望能帮到碰到这个问题的朋友。