Package: gunicorn3
Version: 19.6.0-10+deb9u1
Severity: normal
Dear Maintainer,
I'm writing a web application that needs to server fairly large files,
in the terabyte range. I am using python3-bottle for my code, and it
works just fine. However, when I run my application with gunicorn3 it
doesn't work.
I've distilled this into a small test case. The application code,
saved as file foo.py:
import bottle
def blob(*args, **kwargs):
return bottle.static_file('blob', '.')
app = bottle.Bottle()
app.route(path='/blob', callback=blob)
This is the script that starts it, saved as file start.sh:
#!/bin/sh
set -eu
truncate -s 1G blob
gunicorn3 --bind 0.0.0.0:12765 foo:app
To test, run "sh +x start.sh", and then from another host run:
curl http://195.201.99.89:12765/blob > blob
This always fails for me: curl complains:
curl: (18) transfer closed with 611469105 bytes remaining to read
It seems to always work over localhost. It always works when the blob
is sufficiently small, such as 1024 bytes, even between hosts.
If I don't use gunicorn, and use the Bottle built-in HTTP server, it
always works. Like this:
import bottle
def blob(*args, **kwargs):
return bottle.static_file('blob', '.')
app = bottle.Bottle()
app.route(path='/blob', callback=blob)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=12765)
I ran that on one machine, and ran curl on a different host and it
worked 10 times in a row.
-- System Information:
Debian Release: 9.4
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.9.0-6-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8),
LANGUAGE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages gunicorn3 depends on:
ii python3 3.5.3-1
ii python3-gunicorn 19.6.0-10+deb9u1
gunicorn3 recommends no packages.
Versions of packages gunicorn3 suggests:
pn gunicorn-examples
pn python3-pastedeploy
pn python3-setproctitle
pn python3-tornado
-- no debconf information