场景
python调用接口response.text耗时久
response = requests.get(
url=url,
headers=self.headers,
data=form_data,
timeout=10
)
response.raise_for_status()
st = time.time()
result = response.text
print(f'response.text 耗时:{round(time.time()-st,2)}秒')
原因
response.text 耗时久的核心原因是:
- requests 库的响应处理机制 :
response.text不是简单的读取数据,而是会做编码检测、字符解码等操作,当响应内容很大(你的结果长度 3068758 字符,约 3MB)时,这些操作在不同系统 / 环境下效率差异会被放大。 - 系统 / 环境差异:Linux/macOS 与 Windows 的底层 IO、字符处理库、Python 解释器优化程度不同,且可能存在网络 IO 后续处理的延迟。
- 代码逻辑计时误差 :你当前的计时位置不准确,把
response.text的耗时和后续的日志处理混在一起了。
解决
# 明确指定编码,避免requests自动检测编码的耗时
response.encoding = 'utf-8'
# 直接用content解码
result = response.content.decode('utf-8')