1================ 2Changelog - 2014 3================ 4 5.. note:: 6 7 Please see :doc:`news` for the latest changes. 8 919.1.1 / 2014-08-16 10=================== 11 12Changes 13------- 14 15Core 16++++ 17 18- fix :issue:`835`: display correct pid of already running instance 19- fix :pr:`833`: fix `PyTest` class in setup.py. 20 21 22Logging 23+++++++ 24 25- fix :issue:`838`: statsd logger, send statsd timing metrics in milliseconds 26- fix :issue:`839`: statsd logger, allows for empty log message while pushing 27 metrics and restore worker number in DEBUG logs 28- fix :issue:`850`: add timezone to logging 29- fix :issue:`853`: Respect logger_class setting unless statsd is on 30 31AioHttp worker 32++++++++++++++ 33 34- fix :issue:`830` make sure gaiohttp worker is shipped with gunicorn. 35 3619.1 / 2014-07-26 37================= 38 39Changes 40------- 41 42Core 43++++ 44 45- fix :issue:`785`: handle binary type address given to a client socket address 46- fix graceful shutdown. make sure QUIT and TERMS signals are switched everywhere. 47- :issue:`799`: fix support loading config from module 48- :issue:`805`: fix check for file-like objects 49- fix :issue:`815`: args validation in WSGIApplication.init 50- fix :issue:`787`: check if we load a pyc file or not. 51 52 53Tornado worker 54++++++++++++++ 55 56- fix :issue:`771`: support tornado 4.0 57- fix :issue:`783`: x_headers error. The x-forwarded-headers option has been removed 58 in `c4873681299212d6082cd9902740eef18c2f14f1 59 <https://github.com/benoitc/gunicorn/commit/c4873681299212d6082cd9902740eef18c2f14f1>`_. 60 The discussion is available on :pr:`633`. 61 62 63AioHttp worker 64++++++++++++++ 65 66- fix: fetch all body in input. fix :issue:`803` 67- fix: don't install the worker if python < 3.3 68- fix :issue:`822`: Support UNIX sockets in gaiohttp worker 69 70 71Async worker 72++++++++++++ 73 74- fix :issue:`790`: StopIteration shouldn't be catched at this level. 75 76 77Logging 78+++++++ 79 80- add statsd logging handler fix :issue:`748` 81 82 83Paster 84++++++ 85 86- fix :issue:`809`: Set global logging configuration from a Paste config. 87 88 89Extra 90+++++ 91 92- fix RuntimeError in gunicorn.reloader (:issue:`807`) 93 94 95Documentation 96+++++++++++++ 97 98- update faq: put a note on how `watch logs in the console 99 <http://docs.gunicorn.org/en/latest/faq.html#why-i-don-t-see-any-logs-in-the-console>`_ 100 since many people asked for it. 101 102 10319.0 / 2014-06-12 104================= 105 106Gunicorn 19.0 is a major release with new features and fixes. This 107version improve a lot the usage of Gunicorn with python 3 by adding `two 108new workers <http://docs.gunicorn.org/en/latest/design.html#asyncio-workers>`_ 109to it: `gthread` a fully threaded async worker using futures and `gaiohttp` a 110worker using asyncio. 111 112 113Breaking Changes 114---------------- 115 116Switch QUIT and TERM signals 117++++++++++++++++++++++++++++ 118 119With this change, when gunicorn receives a QUIT all the workers are 120killed immediately and exit and TERM is used for the graceful shutdown. 121 122Note: the old behaviour was based on the NGINX but the new one is more 123correct according the following doc: 124 125https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html 126 127also it is complying with the way the signals are sent by heroku: 128 129https://devcenter.heroku.com/articles/python-faq#what-constraints-exist-when-developing-applications-on-heroku 130 131Deprecations 132++++++++++++ 133 134`run_gunicorn`, `gunicorn_django` and `gunicorn_paster` are now 135completely deprecated and will be removed in the next release. Use the 136`gunicorn` command instead. 137 138 139Changes 140------- 141 142core 143++++ 144 145- add aiohttp worker named `gaiohttp` using asyncio. Full async worker 146 on python 3. 147- fix HTTP-violating excess whitespace in write_error output 148- fix: try to log what happened in the worker after a timeout, add a 149 `worker_abort` hook on SIGABRT signal. 150- fix: save listener socket name in workers so we can handle buffered 151 keep-alive requests after the listener has closed. 152- add on_exit hook called just before exiting gunicorn. 153- add support for python 3.4 154- fix: do not swallow unexpected errors when reaping 155- fix: remove incompatible SSL option with python 2.6 156- add new async gthread worker and `--threads` options allows to set multiple 157 threads to listen on connection 158- deprecate `gunicorn_django` and `gunicorn_paster` 159- switch QUIT and TERM signal 160- reap workers in SIGCHLD handler 161- add universal wheel support 162- use `email.utils.formatdate` in gunicorn.util.http_date 163- deprecate the `--debug` option 164- fix: log exceptions that occur after response start … 165- allows loading of applications from `.pyc` files (#693) 166- fix: issue #691, raw_env config file parsing 167- use a dynamic timeout to wait for the optimal time. (Reduce power 168 usage) 169- fix python3 support when notifying the arbiter 170- add: honor $WEB_CONCURRENCY environment variable. Useful for heroku 171 setups. 172- add: include tz offset in access log 173- add: include access logs in the syslog handler. 174- add --reload option for code reloading 175- add the capability to load `gunicorn.base.Application` without the loading of 176 the arguments of the command line. It allows you to :ref:`embed gunicorn in 177 your own application <custom>`. 178- improve: set wsgi.multithread to True for async workers 179- fix logging: make sure to redirect wsgi.errors when needed 180- add: syslog logging can now be done to a unix socket 181- fix logging: don't try to redirect stdout/stderr to the logfile. 182- fix logging: don't propagate log 183- improve logging: file option can be overriden by the gunicorn options 184 `--error-logfile` and `--access-logfile` if they are given. 185- fix: don't override SERVER_* by the Host header 186- fix: handle_error 187- add more option to configure SSL 188- fix: sendfile with SSL 189- add: worker_int callback (to react on SIGTERM) 190- fix: don't depend on entry point for internal classes, now absolute 191 modules path can be given. 192- fix: Error messages are now encoded in latin1 193- fix: request line length check 194- improvement: proxy_allow_ips: Allow proxy protocol if "*" specified 195- fix: run worker's `setup` method before setting num_workers 196- fix: FileWrapper inherit from `object` now 197- fix: Error messages are now encoded in latin1 198- fix: don't spam the console on SIGWINCH. 199- fix: logging -don't stringify T and D logging atoms (#621) 200- add support for the latest django version 201- deprecate `run_gunicorn` django option 202- fix: sys imported twice 203 204 205gevent worker 206+++++++++++++ 207 208- fix: make sure to stop all listeners 209- fix: monkey patching is now done in the worker 210- fix: "global name 'hub' is not defined" 211- fix: reinit `hub` on old versions of gevent 212- support gevent 1.0 213- fix: add subprocess in monkey patching 214- fix: add support for multiple listener 215 216 217eventlet worker 218+++++++++++++++ 219 220- fix: merge duplicate EventletWorker.init_process method (fixes #657) 221- fix: missing errno import for eventlet sendfile patch 222- fix: add support for multiple listener 223 224 225tornado worker 226++++++++++++++ 227 228- add graceful stop support 229