处理具有多行的excel文件时获取错误502

时间:2012-07-28 19:29:20

标签: django nginx

处理包含多行的Excel文件时获取错误502。

使用Django / Nginx

问题不在于文件的重量小于1Mb。

此页面可以正常使用200行文件,当文件有更多行时问题开始,然后页面处理此文件的时间太长。

这是错误:

2012/07/28 14:29:54 [error] 18515#0: *34 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "POST /import/ HTTP/1.1", upstream: "http://127.0.0.1:9000/import/", host: "localhost:8080", referrer: "http://localhost:8080/import/"

我对变量使用非常大的值,但我一直得到同样的错误。

这是网站的配置:


upstream app_server {
    server 127.0.0.1:9000 fail_timeout=3600s;
    keepalive 3600s;
}

server {
    listen 8080;
    client_max_body_size 4G;
    server_name localhost;

    keepalive_timeout           3600s;
    client_header_timeout       3600s;
    client_body_timeout         3600s;
    send_timeout                3600s;

    location /static/ {
        root  /my path/;
        autoindex on;
        expires 7d;
    }

    location /media/ {
        root  /my path/;
        autoindex on;
        expires 7d;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_redirect off;  

        proxy_connect_timeout       3600s;
        proxy_send_timeout          3600s;
        proxy_read_timeout          3600s;      

        if (!-f $request_filename) {
            proxy_pass http://app_server;
            break;
        }       
    }
}

这是全球配置:


user  www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include     /etc/nginx/mime.types;
    access_log  /var/log/nginx/access.log;
    sendfile        on;
    keepalive_timeout  3600s;
    tcp_nodelay        on;

    client_header_timeout       3600s;
    client_body_timeout         3600s;
    send_timeout                3600s;
    proxy_connect_timeout       3600s;
    proxy_send_timeout          3600s;
    proxy_read_timeout          3600s; 

    client_max_body_size 200m;
    client_body_buffer_size 128k;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

你能给我一些帮助吗?

祝你好运

1 个答案:

答案 0 :(得分:2)

最好的选择是重写例程以使用django-celery但是如果你想要一个快速的解决方案,你可以尝试通过添加以下内容来升级Nginx中代理传递的超时:

proxy_connect_timeout 300s;
proxy_read_timeout 300s;

如果要增加nginx服务的所有站点的超时,您应该将/ var / nginx / sites-available / [site-config]上的此配置添加到特定站点或/var/nginx/nginx.conf。

如果您使用的是gunicorn,则必须添加--timeout = 300。例如:

gunicorn_django -D -b 127.0.0.1:8901 --workers=2 --pid=/var/webapp/campus.pid --settings=settings.production --timeout 300 --pythonpath=/var/webapp/campus/

参考文献: