Nginx-Django-Gunicorn:大文件上传在30秒后停顿

时间:2018-08-03 17:28:05

标签: django file nginx upload gunicorn

我正在尝试将一个大文件(50mb到多个GB)上传到django网站。我使用django docs中介绍的常规文件上传方法。它适用于较小的文件。 我正在使用Nginx-> Gunicorn-> Django服务该网站。

当文件大小较大且文件上传花费的时间超过30秒时,Chrome调用它的上传请求将显示为“ stalled”,并且只会冻结。

我本来以为这是nginx的限制,因为error.log说:

  

2018/08/03 01:13:09 [错误] 1065#1065:* 3客户端打算发送太大的正文:30681744字节,(...)

所以我调整了以下设置:

nginx.conf :(在http块中)

client_max_body_size 100m;
client_body_buffer_size 100m;
client_body_timeout 120;

sites-available / host :(在服务器块中)

send_timeout 120;
client_max_body_size 100m;
client_body_buffer_size 100m;
client_body_timeout 120;

调整这些内容后,错误消息消失了。

黑匣子日志未提供更多信息。但是,文档告诉我使用--timeout 300标志来启动gunicorn,所以我这样做了。

但是文件仍然无法上传,并在30秒后“停滞”。

这是否拖延了浏览器问题?我记得用apache和PHP上传大文件没有问题。我是否缺少django配置?

谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。问题是我完全忽略了dropzone.js。 参见Large file upload - Request gets cancelled