This is a cross-post with the GitHub issue
Given:
- gunicorn 19.7.1
- Python 2.7.9
- Debian 8
- Kernel 3.16.39-1+deb8u2
- On Google Compute Engine
And wsgi.py of:
def application(env, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return ["Hello!"]
Running $ gunicorn wsgi --log-level=debug
Yields:
[2017-04-10 18:01:25 +0000] [31956] [INFO] Starting gunicorn 19.7.1
[2017-04-10 18:01:25 +0000] [31956] [DEBUG] Arbiter booted
[2017-04-10 18:01:25 +0000] [31956] [INFO] Listening at: http://127.0.0.1:8000 (31956)
[2017-04-10 18:01:25 +0000] [31956] [INFO] Using worker: sync
[2017-04-10 18:01:25 +0000] [31961] [INFO] Booting worker with pid: 31961
[2017-04-10 18:01:25 +0000] [31956] [DEBUG] 1 workers
Then using netcat to test it with e.g. echo -en "GET /ping HTTP/1.0\n\n\n" | nc localhost 8000
times out with:
[2017-04-10 18:07:36 +0000] [31977] [CRITICAL] WORKER TIMEOUT (pid:31982)
[2017-04-10 18:07:36 +0000] [31982] [INFO] Worker exiting (pid: 31982)
[2017-04-10 18:07:36 +0000] [31985] [INFO] Booting worker with pid: 31985
Alternatively, sending SIGINT (ctrl-c) to nc instance while waiting yields:
[2017-04-10 18:01:28 +0000] [31961] [DEBUG] Ignored premature client disconnection. No more data after: 'GET /ping HTTP/1.0\n\n\n'
Using --spew
didn't illuminate anything obvious.