Changelog - 2014 — Gunicorn 21.0.0 documentation

# 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

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