- Improve dramatically performances of Gevent and Eventlet workers
- Optimize HTTP parsing
- Drop Server and Date headers in start_response when provided.
- Fix latency issue in async workers
- Improve gevent's workers. Add "egg:gunicorn#gevent_wsgi" worker using
gevent.wsgi and
"egg:gunicorn#gevent_pywsgi" worker using gevent.pywsgi .
"egg:gunicorn#gevent" using our own HTTP parser is still here and
is recommended for normal uses. Use the "gevent.wsgi" parser if you
need really fast connections and don't need streaming, keepalive or ssl.
- Add pre/post request hooks
- Exit more quietly
- Fix gevent dns issue
- New HTTP parser.
- New HUP behaviour. Re-reads the configuration and then reloads all
worker processes without changing the master process id. Helpful for
code reloading and monitoring applications like supervisord and runit.
- Added a preload configuration parameter. By default, application code
is now loaded after a worker forks. This couple with the new HUP
handling can be used for dev servers to do hot code reloading. Using
the preload flag can help a bit in small memory VM's.
- Allow people to pass command line arguments to WSGI applications. See:
examples/alt_spec.py
- Added an example gevent reloader configuration:
examples/example_gevent_reloader.py.
- New gevent worker "egg:gunicorn#gevent2", working with gevent.wsgi.
- Internal refactoring and various bug fixes.
- New documentation website.
- Support https via X-Forwarded-Protocol or X-Forwarded-Ssl headers
- Fix configuration
- Remove -d options which was used instead of -D for daemon.
- Fix umask in unix socket
- Added when_ready hook. Called just after the server is started
- Added preload setting. Load application code before the worker processes
are forked.
- Refactored Config
- Fix pidfile
- Fix QUIT/HUP in async workers
- Fix reexec
- Documentation improvements
- Fix builtins import in config
- Fix installation with pip
- Fix Tornado WSGI support
- Delay application loading until after processing all configuration
- Refactored Worker management for better async support. Now use the -k option
to set the type of request processing to use
- Added support for Tornado
- Added --spew option to help debugging (installs a system trace hook)
- Some fixes in async arbiters
- Fix a bug in start_response on error
- Fix bug when responses have no body.
- Fix pidfile handling
- Fix Exception Error
- Use cStringIO for performance when possible.
- Fix worker freeze when a remote connection closes unexpectedly.
- Make HTTP parsing faster.
- Various bug fixes
- Added support for chunked response.
- Added proc_name option to the config file.
- Improved the HTTP parser. It now uses buffers instead of strings to store
temporary data.
- Improved performance when sending responses.
- Workers are now murdered by age (the oldest is killed first).
- Added gunicorn config file support for Django admin command
- Fix gunicorn config file. -c was broken.
- Removed TTIN/TTOU from workers which blocked other signals.
- Added setproctitle support
- Change privilege switch behavior. We now work like NGINX, master keeps the
permissions, new uid/gid permissions are only set for workers.
- Fix umask
- Added Debian packaging
- Added configuration file handler.
- Added support for pre/post fork hooks
- Added support for before_exec hook
- Added support for unix sockets
- Added launch of workers processes under different user/group
- Added umask option
- Added SCRIPT_NAME support
- Better support of some exotic settings for Django projects
- Better support of Paste-compatible applications
- Some refactoring to make the code easier to hack
- Allow multiple keys in request and response headers