From d12fc05de0352d0654419cac5c11082da3ac90b6 Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Mon, 24 Nov 2014 22:59:32 +0200 Subject: [PATCH] Added issue and pr roles. This commit also split news.rst and 2014-news.rst. news.rst will only contains latest unreleased version's changelog. --- docs/gunicorn_ext.py | 24 ++++ docs/source/2014-news.rst | 88 ++++++-------- docs/source/news.rst | 248 +------------------------------------- 3 files changed, 67 insertions(+), 293 deletions(-) diff --git a/docs/gunicorn_ext.py b/docs/gunicorn_ext.py index ea66a1d3..ffb36e74 100755 --- a/docs/gunicorn_ext.py +++ b/docs/gunicorn_ext.py @@ -1,5 +1,8 @@ import os import inspect + +from docutils import nodes, utils + import gunicorn.config as guncfg HEAD = """\ @@ -16,6 +19,9 @@ used in the configuration file. The command line arguments are listed as well for reference on setting at the command line. """ +ISSUE_URI = 'https://github.com/benoitc/gunicorn/issues/%s' +PULL_REQUEST_URI = 'https://github.com/benoitc/gunicorn/pull/%s' + def format_settings(app): settings_file = os.path.join(app.srcdir, "settings.rst") @@ -29,6 +35,7 @@ def format_settings(app): settings.write(HEAD) settings.write(''.join(ret)) + def fmt_setting(s): if callable(s.default): val = inspect.getsource(s.default) @@ -56,5 +63,22 @@ def fmt_setting(s): out.append("") return "\n".join(out) + +def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): + issue = utils.unescape(text) + text = 'issue ' + issue + refnode = nodes.reference(text, text, refuri=ISSUE_URI % issue) + return [refnode], [] + + +def pull_request_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): + issue = utils.unescape(text) + text = 'pull request ' + issue + refnode = nodes.reference(text, text, refuri=ISSUE_URI % issue) + return [refnode], [] + + def setup(app): app.connect('builder-inited', format_settings) + app.add_role('issue', issue_role) + app.add_role('pr', pull_request_role) diff --git a/docs/source/2014-news.rst b/docs/source/2014-news.rst index 95c5b4ab..adbc6fc4 100644 --- a/docs/source/2014-news.rst +++ b/docs/source/2014-news.rst @@ -1,22 +1,9 @@ Changelog - 2014 ================ -19.2 / unreleased ------------------ +.. note:: -Changes -------- - -Core -++++ - -- fix `#863 `_: fix race condition error. - -Logging -+++++++ - -- fix `#832 `_: log to console by default. -- fix `#845 `_: set the gunicorn loggers from the paste config. + Please see :doc:`news` for the latest changes. 19.1.1 / 2014-08-16 ------------------- @@ -27,22 +14,22 @@ Changes Core ++++ -- fix `#835 `_: display correct pid of already running instance -- fix : fix `PyTest` class in setup.py. +- fix :issue:`835`: display correct pid of already running instance +- fix :pr:`833`: 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 to logging -- fix `#853 `_: Respect logger_class setting unless statsd is on +- 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 `#830 `_ make sure - gaiohttp worker is shipped with gunicorn. +- fix :issue:`830` make sure gaiohttp worker is shipped with gunicorn. 19.1 / 2014-07-26 ~~~~~~~~~~~~~~~~~ @@ -53,52 +40,51 @@ 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. +- 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 `#771 `_: support tornado 4.0 -- fix #783: x_headers error. The x-forwarded-headers option has been removed +- 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 `#633 `_. + `_. + The discussion is available on :pr:`633`. AioHttp worker ++++++++++++++ -- fix: fetch all body in input. fix `#803 `_ +- fix: fetch all body in input. fix :issue:`803` - fix: don't install the worker if python < 3.3 -- fix `#822 `_: Support UNIX sockets in gaiohttp worker +- fix :issue:`822`: Support UNIX sockets in gaiohttp worker Async worker ++++++++++++ -- fix `#790 `_ StopIteration shouldn't be catched at this level. +- fix :issue:`790`: StopIteration shouldn't be catched at this level. Logging +++++++ -- add statsd logging handler fix `#748 `_ +- add statsd logging handler fix :issue:`748` Paster ++++++ -- fix `#809 `_ Set global logging configuration from a Paste config. +- fix :issue:`809`: Set global logging configuration from a Paste config. Extra +++++ -- fix RuntimeError in gunicorn.reloader (`#807 `_) +- fix RuntimeError in gunicorn.reloader (:issue:`807`) Documentation +++++++++++++ @@ -107,18 +93,18 @@ Documentation `_ 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. +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 ++++++++++++++++++++++++++++ @@ -144,7 +130,7 @@ completely deprecated and will be removed in the next release. Use the Changes: -~~~~~~~~ +-------- core ++++ @@ -179,13 +165,16 @@ core - 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](http://docs.gunicorn.org/en/latest/custom.html). +- 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 overriden by the gunicorn options `--error-logfile` and `--access-logfile` if they are given. +- improve logging: file option can be overriden 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 @@ -205,7 +194,6 @@ core - deprecate `run_gunicorn` django option - fix: sys imported twice - gevent worker +++++++++++++ diff --git a/docs/source/news.rst b/docs/source/news.rst index cb243bca..9d8fe9f9 100644 --- a/docs/source/news.rst +++ b/docs/source/news.rst @@ -10,254 +10,16 @@ Changes Core ++++ -- fix `#863 `_: fix race condition error. -- fix `#862 `_: add ``max_requests_jitter`` +- fix :issue:`863`: fix race condition error. +- fix :pr:`862`: add ``max_requests_jitter`` configuration option. -- fix `#917 `_: the deprecated ``--debug`` - option has been removed. +- fix :issue:`917`: the deprecated ``--debug`` option has been removed. Logging +++++++ -- fix `#832 `_: log to console by default. -- fix `#845 `_: set the gunicorn loggers from the paste config - -19.1.1 / 2014-08-16 -------------------- - -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 to logging -- fix `#853 `_: Respect logger_class setting unless statsd is on - -AioHttp worker -++++++++++++++ - -- fix `#830 `_ make sure - gaiohttp worker is shipped with gunicorn. - -19.1 / 2014-07-26 -~~~~~~~~~~~~~~~~~ - -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 -++++++++++++++ - - -- fix `#771 `_: support tornado 4.0 -- fix #783: x_headers error. The x-forwarded-headers option has been removed - in `c4873681299212d6082cd9902740eef18c2f14f1 - `_. The discussion is - available on `#633 `_. - -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. - -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 overriden 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 - -18.0 / 2013-08-26 -~~~~~~~~~~~~~~~~~ - -- 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 +- fix :issue:`832`: log to console by default. +- fix :issue:`845`: set the gunicorn loggers from the paste config History