问题
上传 1-2mb 文件可以正常工作。当我尝试上传 16mb 文件时,几秒钟后出现 502 错误
更详细:
- 我点击“上传”
- 谷歌浏览器上传文件(左下角上传状态从 0% 变为 100%)
- 状态更改为“等待主机”,其中主机是我的站点主机名
- 半分钟后服务器返回“502 Bad Gateway”
我的观点:
def upload(request):
if request.method == 'POST':
f = File(data=request.FILES['file'])
f.save()
return redirect(reverse(display), f.id)
else:
return render('filehosting_upload.html', request)
render(template, request [,data]) 是我自己处理一些 ajax 东西的速记;
filehosting_upload.html
:_
{% extends "base.html" %}
{% block content %}
<h2>File upload</h2>
<form action="{% url nexus.filehosting.views.upload %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file">
<button type="submit" class="btn">Upload</button>
</form>
{% endblock %}
日志和规格
我在日志中找不到任何信息。
版本:
- Django==1.4.2
- Nginx==1.2.1
- 独角兽==0.17.2
命令行参数
command=/var/www/ernado/data/envs/PROJECT_NAME/bin/gunicorn -b localhost:8801 -w 4 PROJECT_NAME:application
相关位置的 Nginx 配置:
location /files/upload {
client_max_body_size 100m;
proxy_pass http://HOST;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
}
Nginx 日志条目(更改了 MY_IP 和 HOST)
2013/03/23 19:31:06 [error] 12701#0: *88 upstream prematurely closed connection while reading response header from upstream, client: MY_IP, server: HOST, request: "POST /files/upload HTTP/1.1", upstream: "http://127.0.0.1:8801/files/upload", host: "HOST", referrer: "http://HOST/files/upload"
Django 日志
2013-03-23 19:31:06 [12634] [CRITICAL] WORKER TIMEOUT (pid:12829)
2013-03-23 19:31:06 [12634] [CRITICAL] WORKER TIMEOUT (pid:12829)
2013-03-23 19:31:06 [13854] [INFO] Booting worker with pid: 13854
问题)
- 如何解决?
- 没有nginx上传模块可以解决这个问题吗?
更新 1 尝试了建议的配置
gunicorn --workers=3 --worker-class=tornado --timeout=90 --graceful-timeout=10 --log-level=DEBUG --bind localhost:8801 --debug
现在对我来说很好。