Skip to content

Releases: benoitc/gunicorn

19.4.1

25 Nov 16:09
Compare
Choose a tag to compare

== 19.4.1 ==

  • fix tornado worker (#1154)

Gunicorn 19.4 has been released

25 Nov 15:24
Compare
Choose a tag to compare

Gunicorn 19.4 has been released. This is a new version with some new features and fixes.

Changes

Core

  • fix: make sure that a user is able to access to the logs after dropping a
    privilege (#1116)
  • improvement: inherit the Exception class where it needs to be (#997)
  • fix: make sure headers are always encodedas latin1 RFC 2616 (#1102)
  • improvement: reduce arbiter noise (#1078)
  • fix: don't close the unix socket when the worker exit (#1088)
  • improvement: Make last logged worker count an explicit instance var (#1078)
  • improvement: prefix config file with its type (#836)
  • improvement: pidfile handing (#1042)
  • fix: catch OSError as well as ValueError on race condition (#1052)
  • improve support of ipv6 by backporting urlparse.urlsplit from Python 2.7 to
    Python 2.6.
  • fix: raise InvalidRequestLine when the line contains maliscious data
    (#1023)
  • fix: fix argument to disable sendfile
  • fix: add gthread to the list of supported workers (#1011)
  • improvement: retry socket binding up to five times upon EADDRNOTAVAIL
    (#1004)
  • breaking change: only honor headers that can be encoded in ascii to comply to
    the RFC 7230 (See #1151).

Logging

  • add new parameters to access log (#1132)
  • fix: make sure that files handles are correctly reopenebd on HUP
    (#627)
  • include request URL in error message (#1071)
  • get username in access logs (#1069)
  • fix statsd logging support on Python 3 (#1010)

Testing

  • use last version of mock.
  • many fixes in Travis CI support
  • miscellaneous improvements in tests

Thread worker

  • fix: Fix self.nr usage in ThreadedWorker so that auto restart works as
    expected (#1031)

Gevent worker

  • fix quit signal handling (#1128)
  • add support for Python 3 (#1066)
  • fix: make graceful shutdown thread-safe (#1032)

Tornado worker

  • fix ssl options (#1146, #1135)
  • don't check timeout when stopping gracefully (#1106)

AIOHttp worker

  • add SSL support (#1105)

Documentation

  • fix link to proc name setting (#1144)
  • fix worker class documentation (#1141, #1104)
  • clarify graceful timeout documentation (#1137)
  • don't duplicate NGINX config files examples (#1050, #1048)
  • add web.py framework example (#1117)
  • update Debian/Ubuntu installations instructions (#1112)
  • clarify pythonpath setting description (#1080)
  • tweak some example for python3
  • clarify sendfile documentation
  • miscellaneous typos in source code comments (thanks!)
  • clarify why REMOTE_ADD may not be the user's IP address (#1037)

Misc

  • fix: reloader should survive SyntaxError (#994)
  • fix: expose the reloader class to the worker.

Full changelog is available here: 19.3...19.4

More

You can find the documentation here:
http://docs.gunicorn.org/en/19.4/

Latest version is also available on Pypi:
https://pypi.python.org/pypi/gunicorn/19.4.0

Gunicorn 19.3 has been released

06 Mar 10:18
Compare
Choose a tag to compare

Gunicorn 19.3 has been released. This is a new version with some new features and fixes.

Changes:

Core

  • fix:#978 make sure a listener is inheritable
  • add check_config class method to workers
  • fix select timeout in sync worker with multiple connections (#983)
  • allows workers to access to the reloader. close #984
  • raise TypeError instead of AssertionError

Logging

  • make Logger.loglevel a class attribute

Documentation

  • fix fix syntax errors in examples/gunicorn_rc (#988)

Full changelog is available here:

19.2.1...19.3

More

You can find the documentation here:

http://docs.gunicorn.org/en/19.3/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/19.3.0

Gunicorn 19.2.1 has been released

04 Feb 13:53
Compare
Choose a tag to compare

Gunicorn 19.2.1 is a patch release with fixes.

Changes:

Logging

  • expose loglevel in the Logger class

AsyncIO worker (gaiohttp)

  • fix #977 fix initial crash

Documentation

  • document security mailing-list in the contributing page.

Full changelog is available here:

19.2...19.2.1

More

You can find the documentation here:

http://docs.gunicorn.org/en/19.2.1/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/19.2.1

Gunicorn 19.2 has been released

30 Jan 14:31
Compare
Choose a tag to compare

Gunicorn 19.2 is a major release with many improvements and fixes.

Changes:

Core

  • optimize the sync workers when listening on a single interface
  • add --sendfile settings to enable/disable sendfile. fix #856 .
  • add the selectors module to the code base. #886
  • fix #862 add --max-requests-jitter setting to set the maximum jitter to add to the
    max-requests setting.
  • fix #899 propagate proxy_protocol_info to keep-alive requests
  • fix #863 worker timeout: dynamic timeout has been removed, fix a race
    condition error
  • fix: Avoid world writable file
  • fix #917: the deprecated --debug option has been removed.

Logging

  • fix #941 set logconfig default to paster more trivially
  • add statsd-prefix config setting: set the prefix to use when emitting statsd
    metrics
  • fix #832 log to console by default
  • fix #845 set the gunicorn loggers from the paste config

Thread Worker

  • fix #908 make sure the worker can continue to accept requests

Eventlet Worker

  • fix #867 , Fix eventlet shutdown to actively shut down the workers.

Documentation

Many improvements and fixes have been done, see the detailled changelog for
more informations.

Full changelog is available here:

19.1.1...19.2

More

You can find the documentation here:

http://docs.gunicorn.org/en/19.2/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/19.2.0

Gunicorn 19.1.1 has been released

16 Aug 12:54
Compare
Choose a tag to compare

Gunicorn 19.1.1 is a minor release with some fixes.

Changes:

Core

  • fix #835: display correct pid of already running instance
  • fix : fix PyTest class in setup.py.

Logging

  • fix #838 : statsd logger, send statsd timing metrics in milliseconds
  • fix #839 : statsd logger, allows for empty log message while pushing metrics and restore worker number in DEBUG logs
  • fix #850: add timezone info to logging
  • fix #853: Respect logger_class setting unless statsd is on

AioHttp worker

  • fix #830 make sure gaiohttp worker is shipped with gunicorn.

Full changelog is available here:

19.1...19.1.1

More

You can find the documentation here:

http://docs.gunicorn.org/en/19.1.1/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/19.1.1

Gunicorn 19.1 has been released

26 Jul 12:20
Compare
Choose a tag to compare

Gunicorn 19.1 is a major release with new features and fixes.

Changes:

Core

  • fix #785: handle binary type address given to a client socket address
  • fix graceful shutdown. make sure QUIT and TERMS signals are switched
    everywhere.
  • support loading config from module (#799)
  • fix check for file-like objects (#805)
  • fix #815 args validation in WSGIApplication.init
  • fix #787 check if we load a pyc file or not.

Tornado worker

AioHttp worker

  • fix: fetch all body in input. fix #803
  • fix: don't install the worker if python < 3.3
  • fix #822: Support UNIX sockets in gaiohttp worker

Async worker

  • fix #790 StopIteration shouldn't be catched at this level.

Logging

  • add statsd logging handler fix #748

Paster

  • fix #809 Set global logging configuration from a Paste config.

Extra

  • fix RuntimeError in gunicorn.reloader (#807)

Documentation

  • update faq: put a note on how `watch logs in the console since many people asked for it.

Full changelog is available here:

19.0...19.1

More

You can find the documentation here:

http://docs.gunicorn.org/en/19.1/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/19.1.0

Gunicorn 19.0 has been released

12 Jun 15:02
Compare
Choose a tag to compare

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 overriden by the gunicorn options --error-logfile and --access-logfile if they are given.
  • fix: dont' 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 monket 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 gracefull stop support

Full changelog is available here:

18.0...19.0

More

You can find the documentation here:

http://docs.gunicorn.org/en/19.0/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/19.0.0

Gunicorn 18.0 has been released

27 Aug 22:45
Compare
Choose a tag to compare

Gunicorn 18.0 is a major release with new features and fixes. With this release the commands gunicorn_django and gunicorn_paster are now deprecated. They will be removed in the next major release R19. You can now easily launch your django or paster applications by only using the gunicorn command line. See the documentation and the following changes for more more information.

Changes

  • new: add -e/--env command line argument to pass an environment variables to
    gunicorn
  • new: add --chdir command line argument to specified directory
    before apps loading.
  • new: add wsgi.file_wrapper support in async workers
  • new: add --paste command line argument to set the paster config file
  • deprecated: the command gunicorn_django is now deprecated. You should now
    run your application with the WSGI interface installed with your project (see
    https://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/gunicorn/) for
    more infos.
  • deprecated: the command gunicorn_paste is deprecated. You now should use
    the new --paste argument to set the configuration file of your paster
    application.
  • fix: Removes unmatched leading quote from the beginning of the default access
    log format string
  • fix: null timeout
  • fix: gevent worker
  • fix: don't reload the paster app when using pserve
  • fix: after closing for error do not keep alive the connection
  • fix: responses 1xx, 204 and 304 should not force the connection to be closed

Full changelog is available here:

17.5...18.0

More

You can find the documentation here:

http://docs.gunicorn.org/en/18.0/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/18.0

Gunicorn 17.5 has been released

03 Jul 09:16
Compare
Choose a tag to compare

Gunicorn 17.5 is a service release with mostly a number of small corrections and user contributions. But there are some new functions worth mentioning as well:

  • new: add signals documentation
  • new: add post_worker_init hook for workers
  • new: try to use gunicorn.conf.py in current folder as the default
    config file.
  • fix graceful timeout with the Eventlet worker
  • fix: don't raise an error when closing the socket if already closed
  • fix: fix --settings parameter for django application and try to find
    the django settings when using the gunicorn command.
  • fix: give the initial global_conf to paster application
  • fix: fix 'Expect: 100-continue' support on Python 3

Full changelog is available here:

0.17.4...17.5

You can find the documentation here:

http://docs.gunicorn.org/en/17.5/

Latest version is also available on Pypi:

https://pypi.python.org/pypi/gunicorn/17.5

Notes:

New versioning:

With this release, the versioning of Gunicorn is changing. Gunicorn is stable since a long time and there is no point to release a "1.0" now. It should have been done since a long time. 0.17 really meant it was the 17th stable version. From the beginning we have only 2 kind of releases:

  • major release: releases with major changes or huge features added
  • services releases: fixes and minor features added

So from now we will apply the following versioning <major>.<service>. For example 17.5 is a service release.