环境
ubuntu 20.04
python 3.6
django 2.2
产生的原因我在网上搜的大概有一下几种
- 服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭;如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中了病毒或者木马,引起网络流量异常。可以使用netstat -an查看网络连接情况。
- 客户关掉了浏览器,而服务器还在给客户端发送数据;
- 浏览器端按了Stop;这两种情况一般不会影响服务器。但是如果对异常信息没有特别处理,有可能在服务器的日志文件中,重复出现该异常,造成服务器日志文件过大,影响服务器的运行。可以对引起异常的部分,使用try…catch捕获该异常,然后不输出或者只输出一句提示信息,避免使用e.printStackTrace();输出全部异常信息。
- 防火墙的问题;如果网络连接通过防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会关闭这个TCP的会话,关闭后在读写,就会导致异常。 如果关闭防火墙,解决了问题,需要重新配置防火墙,或者自己编写程序实现TCP的长连接。实现TCP的长连接,需要自己定义心跳协议,每隔一段时间,发送一次心跳协议,双方维持连接。
其中解决的方式
使用抛出异常的方式
如果是过于频繁请求出错的,可以试用sleep休眠一段时间就可以
我的问题
向请求头中加的长度小于真是文件长度,然后就导致该问题
response['Content-Type'] = file_type
response['Content-Disposition'] = 'inline;filename=%s' % the_file_name
response['content-length'] = size
解决办法修改size,把该值改为和真实文件大小一致就可以了。