Changelog - 2014¶
Note
Please see Changelog for the latest changes.
19.1.1 / 2014-08-16¶
Changes¶
Core¶
fix issue 835: display correct pid of already running instance
fix pull request 833: fix PyTest class in setup.py.
Logging¶
AioHttp worker¶
fix issue 830 make sure gaiohttp worker is shipped with gunicorn.
19.1 / 2014-07-26¶
Changes¶
Core¶
fix issue 785: handle binary type address given to a client socket address
fix graceful shutdown. make sure QUIT and TERMS signals are switched everywhere.
issue 799: fix support loading config from module
issue 805: fix check for file-like objects
fix issue 815: args validation in WSGIApplication.init
fix issue 787: check if we load a pyc file or not.
Tornado worker¶
fix issue 771: support tornado 4.0
fix issue 783: x_headers error. The x-forwarded-headers option has been removed in c4873681299212d6082cd9902740eef18c2f14f1. The discussion is available on pull request 633.
AioHttp worker¶
Async worker¶
fix issue 790: StopIteration shouldn’t be caught at this level.
Logging¶
add statsd logging handler fix issue 748
Paster¶
fix issue 809: Set global logging configuration from a Paste config.
Extra¶
fix RuntimeError in gunicorn.reloader (issue 807)
Documentation¶
update faq: put a note on how watch logs in the console since many people asked for it.
19.0 / 2014-06-12¶
Gunicorn 19.0 is a major release with new features and fixes. This version improve a lot the usage of Gunicorn with python 3 by adding two new workers to it: gthread a fully threaded async worker using futures and gaiohttp a worker using asyncio.
Breaking Changes¶
Switch QUIT and TERM signals¶
With this change, when gunicorn receives a QUIT all the workers are killed immediately and exit and TERM is used for the graceful shutdown.
Note: the old behaviour was based on the NGINX but the new one is more correct according the following doc:
https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html
also it is complying with the way the signals are sent by heroku:
Deprecations¶
run_gunicorn, gunicorn_django and gunicorn_paster are now completely deprecated and will be removed in the next release. Use the gunicorn command instead.
Changes¶
core¶
add aiohttp worker named gaiohttp using asyncio. Full async worker on python 3.
fix HTTP-violating excess whitespace in write_error output
fix: try to log what happened in the worker after a timeout, add a worker_abort hook on SIGABRT signal.
fix: save listener socket name in workers so we can handle buffered keep-alive requests after the listener has closed.
add on_exit hook called just before exiting gunicorn.
add support for python 3.4
fix: do not swallow unexpected errors when reaping
fix: remove incompatible SSL option with python 2.6
add new async gthread worker and –threads options allows to set multiple threads to listen on connection
deprecate gunicorn_django and gunicorn_paster
switch QUIT and TERM signal
reap workers in SIGCHLD handler
add universal wheel support
use email.utils.formatdate in gunicorn.util.http_date
deprecate the –debug option
fix: log exceptions that occur after response start …
allows loading of applications from .pyc files (#693)
fix: issue #691, raw_env config file parsing
use a dynamic timeout to wait for the optimal time. (Reduce power usage)
fix python3 support when notifying the arbiter
add: honor $WEB_CONCURRENCY environment variable. Useful for heroku setups.
add: include tz offset in access log
add: include access logs in the syslog handler.
add –reload option for code reloading
add the capability to load gunicorn.base.Application without the loading of the arguments of the command line. It allows you to embed gunicorn in your own application.
improve: set wsgi.multithread to True for async workers
fix logging: make sure to redirect wsgi.errors when needed
add: syslog logging can now be done to a unix socket
fix logging: don’t try to redirect stdout/stderr to the logfile.
fix logging: don’t propagate log
improve logging: file option can be overridden by the gunicorn options –error-logfile and –access-logfile if they are given.
fix: don’t override SERVER_* by the Host header
fix: handle_error
add more option to configure SSL
fix: sendfile with SSL
add: worker_int callback (to react on SIGTERM)
fix: don’t depend on entry point for internal classes, now absolute modules path can be given.
fix: Error messages are now encoded in latin1
fix: request line length check
improvement: proxy_allow_ips: Allow proxy protocol if “*” specified
fix: run worker’s setup method before setting num_workers
fix: FileWrapper inherit from object now
fix: Error messages are now encoded in latin1
fix: don’t spam the console on SIGWINCH.
fix: logging -don’t stringify T and D logging atoms (#621)
add support for the latest django version
deprecate run_gunicorn django option
fix: sys imported twice
gevent worker¶
fix: make sure to stop all listeners
fix: monkey patching is now done in the worker
fix: “global name ‘hub’ is not defined”
fix: reinit hub on old versions of gevent
support gevent 1.0
fix: add subprocess in monkey patching
fix: add support for multiple listener
eventlet worker¶
fix: merge duplicate EventletWorker.init_process method (fixes #657)
fix: missing errno import for eventlet sendfile patch
fix: add support for multiple listener
tornado worker¶
add graceful stop support