================ Changelog - 2014 ================ .. note:: Please see :doc:`news` for the latest changes. 19.1.1 / 2014-08-16 =================== Changes ------- Core ++++ - fix :issue:`835`: display correct pid of already running instance - fix :pr:`833`: fix `PyTest` class in setup.py. Logging +++++++ - fix :issue:`838`: statsd logger, send statsd timing metrics in milliseconds - fix :issue:`839`: statsd logger, allows for empty log message while pushing metrics and restore worker number in DEBUG logs - fix :issue:`850`: add timezone to logging - fix :issue:`853`: Respect logger_class setting unless statsd is on 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 :pr:`633`. AioHttp worker ++++++++++++++ - fix: fetch all body in input. fix :issue:`803` - fix: don't install the worker if python < 3.3 - fix :issue:`822`: Support UNIX sockets in gaiohttp 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: https://devcenter.heroku.com/articles/python-faq#what-constraints-exist-when-developing-applications-on-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 :ref:`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