问题描述
下面这个get方法是重写的,一般的rest api请求时,响应速度很快,可以正常返回,当我get一个文件,比如800M的文件时,响应速度非常慢?
def get(self, url,ip_list):
self.thread_list=[]
self.error=0
self.result=None
self.error_code=0
self.res = None
for j in ip_list:
real_url=j+url
t=MyThread(get_request,args=(real_url,type))
self.thread_list.append(t)
t.start()
for k in self.thread_list:
k.join()
res=k.get_result()
res_code=res.status_code
if res=='error':
self.error=1
self.error_code='request'
else:
res_code=res.status_code
if res_code>=200 and res_code <400:
self.result=res.text#问题点
self.res = res
else:
self.error_code=res_code
self.error=1
self.result=res.text
问题定位
经过加断点调试发现【问题点】耗时较久,
解决问题
经查阅如果response.content太大的话,大于3M时,会自动计算编码,因为请求是没有附带编码,获取后也没有设置编码,所以
self.result=res.text#问题点
因为返回太大所以回去计算编码,因为内容过长导致计算编码的时间很长。
解决办法
1、reponse.encoding
2、chardet#https://chardet.readthedocs.io/en/latest/usage.html#advanced-usage
3、https://pypi.org/project/cchardet/
类似问题:
https://github.com/psf/requests/issues/5523
1556

被折叠的 条评论
为什么被折叠?



