Requests报”requests.exceptions.ChunkedEncodingError: (“Connection broken: {error message}”, ConnectionResetError(104, ‘Connection reset by peer’)) “的原因以及解决办法

  • Post category:Python

出现该报错信息通常是由于服务器在向客户端传输数据时网络异常或数据传输过程中被重置等原因导致的。解决该问题的方法可以从以下几个方面考虑。

  1. 重新执行请求

首先,可以尝试重新执行请求,这可能只是一个临时的问题,重新执行请求后可能会得到正确的结果。

  1. 设置headers参数

一些服务器在处理请求时需要特定的headers请求头信息,发送请求时可以将headers参数传入。例如:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get('http://www.example.com', headers=headers)
  1. 增大请求超时时间

有时请求超时时间不够可能也会导致该问题的发生,可以设置更长的请求超时时间,例如:

import requests

requests.get('http://www.example.com', timeout=10)
  1. 使用Session对象

使用Session对象发送请求时,该对象可以保存会话状态,确保连接的持久性,从而减少连接失败的可能性。

import requests

session = requests.Session()
response = session.get('http://www.example.com')
  1. 关闭自动解码

在请求数据时,可以选择手动解析响应数据,而不是使用requests库自带的自动解码功能,例如:

import requests

response = requests.get('http://www.example.com', stream=True)
# 手动解析响应数据
content = response.raw.read()

以上是几个可以尝试的解决方案,根据具体情况进行调整,应该能够解决该问题。