使用Django APIView时在服务器上获取ERR_INCOMPLETE_CHUNKED_ENCODING

时间:2017-03-06 22:31:44

标签: django nginx django-rest-framework wsgi gunicorn

我们正在使用

  • Django的
  • rest_framework
  • gunicorn
  • 的Postgres
  • nginx的

一切都在本地工作。但是在服务器上,当我点击Chrome的请求时,我收到了ERR_INCOMPLETE_CHUNKED_ENCODING错误,当我卷曲时,响应就是

curl: (18) transfer closed with outstanding read data remaining

即使我重新启动gunicorn,我立即得到第一个请求的响应,但然后它挂起了某个地方,并且进一步的请求不起作用。 我正在返回一个空白数组,以响应测试,这不起作用,因此响应长度不是问题。

在Django中,我从APIView继承了MyView类(来自rest_framework.views import APIView)。当我将APIView更改为View(来自django.views import View)时,一切都在服务器上正常运行。不确定是什么原因造成的?是APIView库还是gunicorn。 我在当地尝试了gunicorn,它很有效。

3 个答案:

答案 0 :(得分:2)

我添加了

'django.middleware.http.ConditionalGetMiddleware' 

在settings.py的MIDDLEWARE_CLASSES中,它开始工作。 此类在响应中添加Content-Length标头。

答案 1 :(得分:0)

您应该为用户更改/ var / lib / nginx /的权限,而不是执行gunicorn。如果您的用户是用户名,则使用以下命令修复此错误:

chown -R username:username /var/lib/nginx

答案 2 :(得分:0)

在我的情况下,问题正在发生,因为托管我的服务器的盒子达到了100%的磁盘使用率,因此在编写访问日志时nginx失败了。只是有人遇到同样的问题时添加它。因此,这可能意味着存在其他问题,您应该从更全面的角度进行调试。