问题
在实际项目中遇到的这样一个问题:通过Python GET从服务器请求url列表,因为是公司内部数据,知道大概多少条数据,所以直接一次请求500条。平稳运行了一段时间之后,突然某天这个GET请求报错了…
response = requests.get('http://xxx/api/app/list?pageNum=1&pageSize=500')
print(response)
报错信息
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./DownloadCheck.py", line 298, in <module>
apk_url_list = get_url_list()
File "./DownloadCheck.py", line 231, in get_url_list
response = requests.get('http://xxx/api/app/list?pageNum=1&pageSize=500')
File "/usr/lib/python3/dist-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3/dist-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 535, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 688, in send
r.content
File "/usr/lib/python3/dist-packages/requests/models.py", line 828, in content
self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
File "/usr/lib/python3/dist-packages/requests/models.py", line 753, in generate
raise ChunkedEncodingError(e)
requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(3254 bytes read, 4924 more expected)', IncompleteRead(3254 bytes read, 4924 more expected))
RunnerScriptResult = 1
Build step 'Execute shell' marked build as failure
Finished: FAILURE
什么是ChunkedEncodingError
requests.exceptions.ChunkedEncodingError 是 Python 的 requests 库在处理 HTTP 分块传输编码(chunked transfer encoding) 时,服务器响应数据不完整或连接中断导致的异常。
| 原因 | 说明 |
|---|---|
| 🔥 服务器超时关闭连接 | 请求的数据过大,服务器未能处理完,强制关闭了连接。 |
| 📉 服务器异常崩溃或内存不足 | 请求过大,导致服务异常退出或 OOM(内存不足)。 |
| ❌ 服务器响应使用了 chunked encoding,但未按协议完成数据发送 | 例如没有正确结束 chunk,或网络断开。 |
| 🔌 网络不稳定、连接被中断 | 客户端还在接收数据时连接断开。 |
| 🚫 请求参数非法或超限 | 例如你传了 pageSize=500,但服务最多只允许 100 条数据,可能返回异常响应甚至非标准响应。 |
解决
- 增加重试机制,无果,排除网络原因。
- 尝试减小pageSize的数值,请求成功。
分析
✅ 可能的原因一:服务器资源/配置发生变化
- 一开始能正常响应 500 条,说明服务器是可以处理大数据量的,但后续可能:
- 服务更新或发布了新版本,限制了 pageSize(例如限制最大 100)。
- 添加了网关、代理或负载均衡配置,对请求做了限流或超时控制。
- 资源紧张:比如内存、带宽、连接数接近极限,无法完整发送大响应。
✅ 可能的原因二:数据增长,响应体变大,触发异常
随着数据量增长:
- 相同 pageSize=500,返回的数据体积变大(例如字段增加、内容变长、嵌套更深)。
- 响应时间变长,服务超时或连接断开。
- 或者某一条数据本身异常,导致响应不完整或结构错误。



















