Skip to content

Releases: benoitc/gunicorn

19.4.3

Choose a tag to compare

@benoitc benoitc released this 29 Dec 14:37

== 19.4.3 ==

  • fix: don't check if a file is writable using os.stat with SELINUX (#1171)

19.4.2

Choose a tag to compare

@benoitc benoitc released this 29 Dec 09:49

== 19.4.2 ==

=== Core ===

  • improvement: handle HaltServer in manage_workers (#1095)
  • fix: Do not rely on sendfile sending requested count (#1155)
  • fix: claridy --no-sendfile default (#1156)
  • fix: LoggingCatch sendfile failure from no file descriptor (#1160)

=== Logging ===

  • fix: Always send access log to syslog if syslog is on
  • fix: check auth before trying to own a file (#1157)

=== Documentation ===

  • fix: Fix Slowloris broken link. (#1142)
  • Tweak markup in faq.rst

=== Testing ===

  • fix: gaiohttp test (#1164)

19.4.1

Choose a tag to compare

@benoitc benoitc released this 25 Nov 16:09

== 19.4.1 ==

  • fix tornado worker (#1154)

Gunicorn 19.4 has been released

Choose a tag to compare

@benoitc benoitc released this 25 Nov 15:24

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

Choose a tag to compare

@benoitc benoitc released this 06 Mar 10:18

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

Choose a tag to compare

@benoitc benoitc released this 04 Feb 13:53

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

Choose a tag to compare

@benoitc benoitc released this 30 Jan 14:31

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

Choose a tag to compare

@benoitc benoitc released this 16 Aug 12:54

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

Choose a tag to compare

@benoitc benoitc released this 26 Jul 12:20

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

Choose a tag to compare

@benoitc benoitc released this 12 Jun 15:02

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