1

I created an endpoint on my flask which generates a spreadsheet from a database query (remote db) and then sends it as a download in the browser. Flask doesn't throw any errors. Uwsgi doesn't complain.

But when I check nginx's error.log I see a lot of

2014/12/10 05:06:24 [error] 14084#0: *239436 upstream prematurely closed connection while reading response header from upstream, client: 34.34.34.34, server: me.com, request: "GET /download/export.csv HTTP/1.1", upstream: "uwsgi://0.0.0.0:5002", host: "me.com", referrer: "https://me.com/download/export.csv"

I deploy the uwsgi like

uwsgi --socket 0.0.0.0:5002 --buffer-size=32768 --module server --callab app

my nginx config:

server {
     listen 80;
     merge_slashes off;
     server_name me.com www.me.cpm;

     location / { try_files $uri @app; }
       location @app {
          include uwsgi_params;
          uwsgi_pass 0.0.0.0:5002;
          uwsgi_buffer_size 32k;
          uwsgi_buffers 8 32k;
          uwsgi_busy_buffers_size 32k;
     }

}

server {
      listen 443;
      merge_slashes off;
      server_name me.com www.me.com;

    location / { try_files $uri @app; }
       location @app {
          include uwsgi_params;
          uwsgi_pass 0.0.0.0:5002;
          uwsgi_buffer_size 32k;
          uwsgi_buffers 8 32k;
          uwsgi_busy_buffers_size 32k;
       }
}

Is this an nginx or uwsgi issue, or both?

Here's what uwsgi says on starting up

    *** Starting uWSGI 2.0 (64bit) on [Wed Dec 10 15:20:23 2014] *** compiled with version: 4.6.3 on 20 January 2014 16:57:53 os: Linux-3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 16:19:23 UTC 
2013 nodename: me.com machine: x86_64 clock source: unix detected number of CPU cores: 1 current 
working directory: /home/server.py detected binary path: /usr/local/bin/uwsgi !!! no internal routing
 support, rebuild with pcre support !!! your processes number limit is 3781 your memory page size is 4096 bytes detected max file descriptor number: 1024 lock engine: pthread robust mutexes thunder lock: disabled (you can enable it with --thunder-lock) uwsgi socket 0 bound to TCP address 0.0.0.0:5002 fd 3 Python version: 2.7.3 (default, Sep 26 2013, 20:13:52)  [GCC 4.6.3] Python main interpreter initialized at 0x23632b0 python threads support enabled your server socket listen backlog is limited to 100 connections your mercy for graceful operations on workers is 60 seconds mapped 202864 bytes (198 KB) for 1 cores
    *** Operational MODE: single process *** WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x23632b0 pid: 30636 (default app)
    *** uWSGI is running in multiple interpreter mode ***

Here's what uwsgi says on downlaod request

[pid: 30643|app: 0|req: 763/763] 33.33.33.33 () {56 vars in 2982 bytes} [Wed Dec 10 15:09:59 2014] GET /download/test.xlsx => generated 5564 bytes in 392 msecs via sendfile() (HTTP/1.1 200) 7 headers in 510 bytes (0 switches on core 0)

  • report uWSGI startup logs and request logs when doing the request – roberto Dec 10 '14 at 10:18
  • weird now it's not throwing the error anymore. I Don't know what changed. – user299709 Dec 10 '14 at 20:11
  • @roberto I added those in the question – user299709 Dec 10 '14 at 20:23
  • Your uWSGI log stops before the worker is loaded (unless you did not pasted it). Are you sure you are not calling app.run() in your entry point ? – roberto Dec 11 '14 at 5:02
  • I don't know it is no longer happening but wonder what was causing it. – user299709 Dec 11 '14 at 7:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.