关于python request请求出现时间过长的处理
1. 问题:
使用 python requests get请求 https://m.ximalaya.com/down,执行下载,并对内容进行处理,出现时长大与900多秒,影响性能
2. 问题复现
- 运行代码:
import requests import time url = "https://m.ximalaya.com/down" start = time.time() res = requests.get(url) a = res.content print(time.time() - start) start = time.time() res.text print(time.time())
- 运行结果:
3. 问题分析:
-
requests.get(url) 10s 左右, 可以接受
-
再由字节码转为text,910秒,花费时间过程 => 造成程序过慢
-
同时通过下面源码,发现每调用一次 res.text 需要一次编码转译,造成时间成倍增加
4. 解决方案:
- poc 插件对请求相应header 做类型判断,丢弃适当的类型(二进制,word,execl,ppt, pdf,音频,视频,图片等文件)
- 在插件分析过程中,避免减少过程调用 .text 次数
- 在插件分析请求返回body过程中,使用字节码分析,代替文本格式分析