- 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 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