mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
A safe and reliable check for whether a file descriptor supports mmap is to directly check if it is seekable. However, some seekable file descriptors may also report a zero size when calling fstat. If there is no content length specified for the response and it cannot be determined from the file descriptor then it is not possible to know what chunk size to send to the client. In this case, is it necessary to fall back to unwinding the body by iteration. The above conditions together reveal a straightforward and reliable way to check for sendfile support. This patch modifies the Response class to assert these conditions using a try/catch block as part of a new, simplified sendfile method. This method returns False if it is not possible to serve the response using sendfile. Otherwise, it serves the response and returns True. By returning False when SSL is in use, the code is made even simpler by removing the special support for SSL, which is served well enough by the iteration protocol. Fix #1038
Gunicorn
--------
.. image::
https://secure.travis-ci.org/benoitc/gunicorn.png?branch=master
:alt: Build Status
:target: https://travis-ci.org/benoitc/gunicorn
Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX. It's a pre-fork
worker model ported from Ruby's Unicorn_ project. The Gunicorn server is broadly
compatible with various web frameworks, simply implemented, light on server
resource usage, and fairly speedy.
Feel free to join us in `#gunicorn`_ on Freenode_.
Documentation
-------------
The documentation is hosted at http://docs.gunicorn.org.
Installation
------------
Gunicorn requires **Python 2.x >= 2.6** or **Python 3.x >= 3.2**.
Install from PyPI::
$ pip install gunicorn
Usage
-----
Basic usage::
$ gunicorn [OPTIONS] APP_MODULE
Where ``APP_MODULE`` is of the pattern ``$(MODULE_NAME):$(VARIABLE_NAME)``. The
module name can be a full dotted path. The variable name refers to a WSGI
callable that should be found in the specified module.
Example with test app::
$ cd examples
$ gunicorn --workers=2 test:app
License
-------
Gunicorn is released under the MIT License. See the LICENSE_ file for more
details.
.. _Unicorn: http://unicorn.bogomips.org/
.. _`#gunicorn`: http://webchat.freenode.net/?channels=gunicorn
.. _Freenode: http://freenode.net
.. _LICENSE: http://github.com/benoitc/gunicorn/blob/master/LICENSE
Languages
Python
99.9%