Hello community, here is the log from the commit of package python-gunicorn for openSUSE:Factory checked in at 2012-03-23 12:09:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-gunicorn (Old) and /work/SRC/openSUSE:Factory/.python-gunicorn.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gunicorn", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:Factory/python-gunicorn/python-gunicorn.changes 2012-03-16 13:23:01.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.python-gunicorn.new/python-gunicorn.changes 2012-03-23 12:09:40.000000000 +0100 @@ -1,0 +2,11 @@ +Thu Mar 22 10:05:23 UTC 2012 - s...@ammler.ch + +- Update to version 0.14.2 + - add validate_class validator: allows to use a class or a method + to initialize the app during in-code configuration + - add support for max_requests in tornado worker + - add support for disabling x_forwarded_for_header in tornado worker + - gevent_wsgi is now an alias of gevent_pywsgi + - Fix gevent_pywsgi worker + +------------------------------------------------------------------- Old: ---- gunicorn-0.14.1.tar.gz New: ---- gunicorn-0.14.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-gunicorn.spec ++++++ --- /var/tmp/diff_new_pack.pMSZTS/_old 2012-03-23 12:09:41.000000000 +0100 +++ /var/tmp/diff_new_pack.pMSZTS/_new 2012-03-23 12:09:41.000000000 +0100 @@ -11,17 +11,18 @@ # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# + # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + Name: python-gunicorn -Version: 0.14.1 +Version: 0.14.2 Release: 0 -License: MIT Summary: WSGI HTTP Server for UNIX -Url: http://gunicorn.org +License: MIT Group: Development/Languages/Python +Url: http://gunicorn.org Source: http://pypi.python.org/packages/source/g/gunicorn/gunicorn-%{version}.tar.gz BuildRequires: python-devel BuildRequires: python-distribute ++++++ gunicorn-0.14.1.tar.gz -> gunicorn-0.14.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/PKG-INFO new/gunicorn-0.14.2/PKG-INFO --- old/gunicorn-0.14.1/PKG-INFO 2012-03-04 08:50:50.000000000 +0100 +++ new/gunicorn-0.14.2/PKG-INFO 2012-03-16 21:34:35.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: gunicorn -Version: 0.14.1 +Version: 0.14.2 Summary: WSGI HTTP Server for UNIX Home-page: http://gunicorn.org Author: Benoit Chesneau diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/THANKS new/gunicorn-0.14.2/THANKS --- old/gunicorn-0.14.1/THANKS 2012-02-20 19:51:53.000000000 +0100 +++ new/gunicorn-0.14.2/THANKS 2012-03-16 11:44:55.000000000 +0100 @@ -32,9 +32,9 @@ Masahiro Nakagawa <repeate...@gmail.com> Denis Bilenko <denis.bile...@gmail.com> Phil Schanely <p...@daylife.com> -Chris Lamb <la...@debian.org> -Jonas Borgström <jo...@borgstrom.se> Evan Mezeske <advanced.fractal.explo...@gmail.com> Darii Denis <denis.da...@gmail.com> Dan Callaghan <d...@djc.id.au> Kristian Glass <g...@doismellburning.co.uk> +Mazdak Rezvani <maz...@mac.com> +Maxim Kamenkov <mkamen...@gmail.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/doc/htdocs/configure.html new/gunicorn-0.14.2/doc/htdocs/configure.html --- old/gunicorn-0.14.1/doc/htdocs/configure.html 2012-02-29 14:11:55.000000000 +0100 +++ new/gunicorn-0.14.2/doc/htdocs/configure.html 2012-03-16 11:44:55.000000000 +0100 @@ -272,7 +272,7 @@ <li><tt class="docutils literal"><span class="pre">--limit-request-field_size</span> INT</tt></li> <li><tt class="docutils literal">8190</tt></li> </ul> -<p>Limit he allowed size of an HTTP request header field.</p> +<p>Limit the allowed size of an HTTP request header field.</p> <p>Value is a number from 0 (unlimited) to 8190. to set the limit on the allowed size of an HTTP request header field.</p> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/doc/htdocs/index.html new/gunicorn-0.14.2/doc/htdocs/index.html --- old/gunicorn-0.14.1/doc/htdocs/index.html 2012-02-25 15:33:01.000000000 +0100 +++ new/gunicorn-0.14.2/doc/htdocs/index.html 2012-03-16 21:10:53.000000000 +0100 @@ -79,33 +79,15 @@ </ul> </div> <div class="blurb"> - <h3>Version 0.14.0 / 2012-02-27</h3> + <h3>Version 0.14.2 / 2012-03-16</h3> <ul> - <li>check if Request line is too large: You can now pass the - parameter <code>--limit-request-line</code> or set the - <code>limit_request_line</code> in your configuration file to set the max - size of the request line in bytes.</li> - <li>limit the number of headers fields and their size. Add - <code>--limit-request-fieldsw</code> and - <code>limit-request-field-size</code> settings</li> - <li>add <code>p</code> variable to the log access format to log - pidfile</li> - <li>add <code>{HeaderName}o</code> variable to the logo access format to - log the response header HeaderName</li> - <li>request header is now logged with the variable - <code>{HeaderName}i</code> in the access log file</lI> - <li>improve error logging</li> - <li>support logging.configFile</li> - <li><strong>support django 1.4</strong> in both - <code>gunicorn_django</code> & <code>run_gunicorn</code> command</li> - <li>improve reload in django run_gunicorn command (should just - work now)</li> - <li>allows people to set the <code>X-Forwarded-For</code> header key and - disable it by setting an empty string.</li> - <li>fix support of Tornado</li> - <li>many <a - href="https://github.com/benoitc/gunicorn/compare/0.13.4...0.14.0">other - fixes.</a></li></li> + <li>add validate_class validator: allows to use a class or a + method to initialize the app during in-code configuration</li> + <li>add support for max_requests in tornado worker</li> + <li>add support for disabling x_forwarded_for_header in + tornado worker</li> + <li>gevent_wsgi is now an alias of gevent_pywsgi</li> + <li>Fix gevent_pywsgi worker</li> </ul> </div> <div id="footer"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/doc/htdocs/news.html new/gunicorn-0.14.2/doc/htdocs/news.html --- old/gunicorn-0.14.1/doc/htdocs/news.html 2012-02-25 15:31:09.000000000 +0100 +++ new/gunicorn-0.14.2/doc/htdocs/news.html 2012-03-16 21:11:05.000000000 +0100 @@ -29,6 +29,23 @@ <div id="content"> <div class="document"> <div class="section" id="id1"> +<h2><a class="toc-backref" href="#contents">0.14.2 / 2012-03-16</a></h2> +<ul class="simple"> +<li>add validate_class validator: allows to use a class or a method to +initialize the app during in-code configuration</li> +<li>add support for max_requests in tornado worker</li> +<li>add support for disabling x_forwarded_for_header in tornado worker</li> +<li>gevent_wsgi is now an alias of gevent_pywsgi</li> +<li>Fix gevent_pywsgi worker</li> +</ul> +</div> +<div class="section" id="id2"> +<h2><a class="toc-backref" href="#contents">0.14.1 / 2012-03-02</a></h2> +<ul class="simple"> +<li>fixing source archive, reducing its size</li> +</ul> +</div> +<div class="section" id="id3"> <h2><a class="toc-backref" href="#contents">0.14.0 / 2012-02-27</a></h2> <ul class="simple"> <li>check if Request line is too large: You can now pass the parameter @@ -51,14 +68,14 @@ <li>many other fixes.</li> </ul> </div> -<div class="section" id="id2"> +<div class="section" id="id4"> <h2><a class="toc-backref" href="#contents">0.13.4 / 2011-09-23</a></h2> <ul class="simple"> <li>fix util.closerange function used to prevent leaking fds on python 2.5 (typo)</li> </ul> </div> -<div class="section" id="id3"> +<div class="section" id="id5"> <h2><a class="toc-backref" href="#contents">0.13.3 / 2011-09-19</a></h2> <ul class="simple"> <li>refactor gevent worker</li> @@ -66,7 +83,7 @@ <li>fix inverted request_time computation</li> </ul> </div> -<div class="section" id="id4"> +<div class="section" id="id6"> <h2><a class="toc-backref" href="#contents">0.13.2 / 2011-09-17</a></h2> <ul class="simple"> <li>Add support for Tornado 2.0 in tornado worker</li> @@ -79,13 +96,13 @@ <li>Fix Django reloading</li> </ul> </div> -<div class="section" id="id5"> +<div class="section" id="id7"> <h2><a class="toc-backref" href="#contents">0.13.1 / 2011-08-22</a></h2> <ul class="simple"> <li>Fix unix socket. log argument was missing.</li> </ul> </div> -<div class="section" id="id6"> +<div class="section" id="id8"> <h2><a class="toc-backref" href="#contents">0.13.0 / 2011-08-22</a></h2> <ul class="simple"> <li>Improve logging: allows file-reopening and add access log file @@ -103,7 +120,7 @@ <li>Fix the use of sendfile in wsgi.file_wrapper</li> </ul> </div> -<div class="section" id="id7"> +<div class="section" id="id9"> <h2><a class="toc-backref" href="#contents">0.12.2 / 2011-05-18</a></h2> <ul class="simple"> <li>Add wsgi.file_wrapper optimised for FreeBSD, Linux & MacOSX (use @@ -114,7 +131,7 @@ <li>Compatible with gevent 0.14dev</li> </ul> </div> -<div class="section" id="id8"> +<div class="section" id="id10"> <h2><a class="toc-backref" href="#contents">0.12.1 / 2011-03-23</a></h2> <ul class="simple"> <li>Add "on_starting" hook. This hook can be used to set anything before @@ -126,7 +143,7 @@ <li>Fix ipv6 handling</li> </ul> </div> -<div class="section" id="id9"> +<div class="section" id="id11"> <h2><a class="toc-backref" href="#contents">0.12.0 / 2010-12-22</a></h2> <ul class="simple"> <li>Add support for logging configuration using a ini file. @@ -144,7 +161,7 @@ <li>Set the number of workers to zero on WINCH</li> </ul> </div> -<div class="section" id="id10"> +<div class="section" id="id12"> <h2><a class="toc-backref" href="#contents">0.11.2 / 2010-10-30</a></h2> <ul class="simple"> <li>Add SERVER_SOFTWARE to the os.environ</li> @@ -157,7 +174,7 @@ <li>Fix readline in wsgi.input</li> </ul> </div> -<div class="section" id="id11"> +<div class="section" id="id13"> <h2><a class="toc-backref" href="#contents">0.11.1 / 2010-09-02</a></h2> <ul class="simple"> <li>Implement max-requests feature to prevent memory leaks.</li> @@ -169,7 +186,7 @@ <li>Workaround to prevent Gevent worker to segfault on MacOSX.</li> </ul> </div> -<div class="section" id="id12"> +<div class="section" id="id14"> <h2><a class="toc-backref" href="#contents">0.11.0 / 2010-08-12</a></h2> <ul class="simple"> <li>Improve dramatically performances of Gevent and Eventlet workers</li> @@ -178,7 +195,7 @@ <li>Fix latency issue in async workers</li> </ul> </div> -<div class="section" id="id13"> +<div class="section" id="id15"> <h2><a class="toc-backref" href="#contents">0.10.1 / 2010-08-06</a></h2> <ul class="simple"> <li>Improve gevent's workers. Add "egg:gunicorn#gevent_wsgi" worker using @@ -192,7 +209,7 @@ <li>Fix gevent dns issue</li> </ul> </div> -<div class="section" id="id14"> +<div class="section" id="id16"> <h2><a class="toc-backref" href="#contents">0.10.0 / 2010-07-08</a></h2> <ul class="simple"> <li>New HTTP parser.</li> @@ -212,7 +229,7 @@ <li>New documentation website.</li> </ul> </div> -<div class="section" id="id15"> +<div class="section" id="id17"> <h2><a class="toc-backref" href="#contents">0.9.1 / 2010-05-26</a></h2> <ul class="simple"> <li>Support https via X-Forwarded-Protocol or X-Forwarded-Ssl headers</li> @@ -221,7 +238,7 @@ <li>Fix umask in unix socket</li> </ul> </div> -<div class="section" id="id16"> +<div class="section" id="id18"> <h2><a class="toc-backref" href="#contents">0.9.0 / 2010-05-24</a></h2> <ul class="simple"> <li>Added <em>when_ready</em> hook. Called just after the server is started</li> @@ -234,7 +251,7 @@ <li>Documentation improvements</li> </ul> </div> -<div class="section" id="id17"> +<div class="section" id="id19"> <h2><a class="toc-backref" href="#contents">0.8.1 / 2010-04-29</a></h2> <ul class="simple"> <li>Fix builtins import in config</li> @@ -243,7 +260,7 @@ <li>Delay application loading until after processing all configuration</li> </ul> </div> -<div class="section" id="id18"> +<div class="section" id="id20"> <h2><a class="toc-backref" href="#contents">0.8.0 / 2010-04-22</a></h2> <ul class="simple"> <li>Refactored Worker management for better async support. Now use the -k option @@ -251,7 +268,7 @@ <li>Added support for <a class="reference external" href="http://www.tornadoweb.org/">Tornado</a></li> </ul> </div> -<div class="section" id="id19"> +<div class="section" id="id21"> <h2><a class="toc-backref" href="#contents">0.7.2 / 2010-04-15</a></h2> <ul class="simple"> <li>Added --spew option to help debugging (installs a system trace hook)</li> @@ -259,13 +276,13 @@ <li>Fix a bug in start_response on error</li> </ul> </div> -<div class="section" id="id20"> +<div class="section" id="id22"> <h2><a class="toc-backref" href="#contents">0.7.1 / 2010-04-01</a></h2> <ul class="simple"> <li>Fix bug when responses have no body.</li> </ul> </div> -<div class="section" id="id21"> +<div class="section" id="id23"> <h2><a class="toc-backref" href="#contents">0.7.0 / 2010-03-26</a></h2> <ul class="simple"> <li>Added support for <a class="reference external" href="http://eventlet.net">Eventlet</a> and <a class="reference external" href="http://gevent.org">Gevent</a> based workers.</li> @@ -275,28 +292,28 @@ <li>Fix <a class="reference external" href="http://www.python.org/dev/peps/pep-0333/">PEP 333</a> compliance for the write callable.</li> </ul> </div> -<div class="section" id="id22"> +<div class="section" id="id24"> <h2><a class="toc-backref" href="#contents">0.6.5 / 2010-03-11</a></h2> <ul class="simple"> <li>Fix pidfile handling</li> <li>Fix Exception Error</li> </ul> </div> -<div class="section" id="id23"> +<div class="section" id="id25"> <h2><a class="toc-backref" href="#contents">0.6.4 / 2010-03-08</a></h2> <ul class="simple"> <li>Use cStringIO for performance when possible.</li> <li>Fix worker freeze when a remote connection closes unexpectedly.</li> </ul> </div> -<div class="section" id="id24"> +<div class="section" id="id26"> <h2><a class="toc-backref" href="#contents">0.6.3 / 2010-03-07</a></h2> <ul class="simple"> <li>Make HTTP parsing faster.</li> <li>Various bug fixes</li> </ul> </div> -<div class="section" id="id25"> +<div class="section" id="id27"> <h2><a class="toc-backref" href="#contents">0.6.2 / 2010-03-01</a></h2> <ul class="simple"> <li>Added support for chunked response.</li> @@ -307,7 +324,7 @@ <li>Workers are now murdered by age (the oldest is killed first).</li> </ul> </div> -<div class="section" id="id26"> +<div class="section" id="id28"> <h2><a class="toc-backref" href="#contents">0.6.1 / 2010-02-24</a></h2> <ul class="simple"> <li>Added gunicorn config file support for Django admin command</li> @@ -315,7 +332,7 @@ <li>Removed TTIN/TTOU from workers which blocked other signals.</li> </ul> </div> -<div class="section" id="id27"> +<div class="section" id="id29"> <h2><a class="toc-backref" href="#contents">0.6 / 2010-02-22</a></h2> <ul class="simple"> <li>Added setproctitle support</li> @@ -323,14 +340,14 @@ permissions, new uid/gid permissions are only set for workers.</li> </ul> </div> -<div class="section" id="id28"> +<div class="section" id="id30"> <h2><a class="toc-backref" href="#contents">0.5.1 / 2010-02-22</a></h2> <ul class="simple"> <li>Fix umask</li> <li>Added Debian packaging</li> </ul> </div> -<div class="section" id="id29"> +<div class="section" id="id31"> <h2><a class="toc-backref" href="#contents">0.5 / 2010-02-20</a></h2> <ul class="simple"> <li>Added <a class="reference external" href="configuration.html">configuration file</a> handler.</li> @@ -352,35 +369,37 @@ <div class="contents topic" id="contents"> <p class="topic-title first">Contents</p> <ul class="simple"> -<li><a class="reference internal" href="#id1" id="id30">0.14.0 / 2012-02-27</a></li> -<li><a class="reference internal" href="#id2" id="id31">0.13.4 / 2011-09-23</a></li> -<li><a class="reference internal" href="#id3" id="id32">0.13.3 / 2011-09-19</a></li> -<li><a class="reference internal" href="#id4" id="id33">0.13.2 / 2011-09-17</a></li> -<li><a class="reference internal" href="#id5" id="id34">0.13.1 / 2011-08-22</a></li> -<li><a class="reference internal" href="#id6" id="id35">0.13.0 / 2011-08-22</a></li> -<li><a class="reference internal" href="#id7" id="id36">0.12.2 / 2011-05-18</a></li> -<li><a class="reference internal" href="#id8" id="id37">0.12.1 / 2011-03-23</a></li> -<li><a class="reference internal" href="#id9" id="id38">0.12.0 / 2010-12-22</a></li> -<li><a class="reference internal" href="#id10" id="id39">0.11.2 / 2010-10-30</a></li> -<li><a class="reference internal" href="#id11" id="id40">0.11.1 / 2010-09-02</a></li> -<li><a class="reference internal" href="#id12" id="id41">0.11.0 / 2010-08-12</a></li> -<li><a class="reference internal" href="#id13" id="id42">0.10.1 / 2010-08-06</a></li> -<li><a class="reference internal" href="#id14" id="id43">0.10.0 / 2010-07-08</a></li> -<li><a class="reference internal" href="#id15" id="id44">0.9.1 / 2010-05-26</a></li> -<li><a class="reference internal" href="#id16" id="id45">0.9.0 / 2010-05-24</a></li> -<li><a class="reference internal" href="#id17" id="id46">0.8.1 / 2010-04-29</a></li> -<li><a class="reference internal" href="#id18" id="id47">0.8.0 / 2010-04-22</a></li> -<li><a class="reference internal" href="#id19" id="id48">0.7.2 / 2010-04-15</a></li> -<li><a class="reference internal" href="#id20" id="id49">0.7.1 / 2010-04-01</a></li> -<li><a class="reference internal" href="#id21" id="id50">0.7.0 / 2010-03-26</a></li> -<li><a class="reference internal" href="#id22" id="id51">0.6.5 / 2010-03-11</a></li> -<li><a class="reference internal" href="#id23" id="id52">0.6.4 / 2010-03-08</a></li> -<li><a class="reference internal" href="#id24" id="id53">0.6.3 / 2010-03-07</a></li> -<li><a class="reference internal" href="#id25" id="id54">0.6.2 / 2010-03-01</a></li> -<li><a class="reference internal" href="#id26" id="id55">0.6.1 / 2010-02-24</a></li> -<li><a class="reference internal" href="#id27" id="id56">0.6 / 2010-02-22</a></li> -<li><a class="reference internal" href="#id28" id="id57">0.5.1 / 2010-02-22</a></li> -<li><a class="reference internal" href="#id29" id="id58">0.5 / 2010-02-20</a></li> +<li><a class="reference internal" href="#id1" id="id32">0.14.2 / 2012-03-16</a></li> +<li><a class="reference internal" href="#id2" id="id33">0.14.1 / 2012-03-02</a></li> +<li><a class="reference internal" href="#id3" id="id34">0.14.0 / 2012-02-27</a></li> +<li><a class="reference internal" href="#id4" id="id35">0.13.4 / 2011-09-23</a></li> +<li><a class="reference internal" href="#id5" id="id36">0.13.3 / 2011-09-19</a></li> +<li><a class="reference internal" href="#id6" id="id37">0.13.2 / 2011-09-17</a></li> +<li><a class="reference internal" href="#id7" id="id38">0.13.1 / 2011-08-22</a></li> +<li><a class="reference internal" href="#id8" id="id39">0.13.0 / 2011-08-22</a></li> +<li><a class="reference internal" href="#id9" id="id40">0.12.2 / 2011-05-18</a></li> +<li><a class="reference internal" href="#id10" id="id41">0.12.1 / 2011-03-23</a></li> +<li><a class="reference internal" href="#id11" id="id42">0.12.0 / 2010-12-22</a></li> +<li><a class="reference internal" href="#id12" id="id43">0.11.2 / 2010-10-30</a></li> +<li><a class="reference internal" href="#id13" id="id44">0.11.1 / 2010-09-02</a></li> +<li><a class="reference internal" href="#id14" id="id45">0.11.0 / 2010-08-12</a></li> +<li><a class="reference internal" href="#id15" id="id46">0.10.1 / 2010-08-06</a></li> +<li><a class="reference internal" href="#id16" id="id47">0.10.0 / 2010-07-08</a></li> +<li><a class="reference internal" href="#id17" id="id48">0.9.1 / 2010-05-26</a></li> +<li><a class="reference internal" href="#id18" id="id49">0.9.0 / 2010-05-24</a></li> +<li><a class="reference internal" href="#id19" id="id50">0.8.1 / 2010-04-29</a></li> +<li><a class="reference internal" href="#id20" id="id51">0.8.0 / 2010-04-22</a></li> +<li><a class="reference internal" href="#id21" id="id52">0.7.2 / 2010-04-15</a></li> +<li><a class="reference internal" href="#id22" id="id53">0.7.1 / 2010-04-01</a></li> +<li><a class="reference internal" href="#id23" id="id54">0.7.0 / 2010-03-26</a></li> +<li><a class="reference internal" href="#id24" id="id55">0.6.5 / 2010-03-11</a></li> +<li><a class="reference internal" href="#id25" id="id56">0.6.4 / 2010-03-08</a></li> +<li><a class="reference internal" href="#id26" id="id57">0.6.3 / 2010-03-07</a></li> +<li><a class="reference internal" href="#id27" id="id58">0.6.2 / 2010-03-01</a></li> +<li><a class="reference internal" href="#id28" id="id59">0.6.1 / 2010-02-24</a></li> +<li><a class="reference internal" href="#id29" id="id60">0.6 / 2010-02-22</a></li> +<li><a class="reference internal" href="#id30" id="id61">0.5.1 / 2010-02-22</a></li> +<li><a class="reference internal" href="#id31" id="id62">0.5 / 2010-02-20</a></li> </ul> </div> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/doc/site/news.rst new/gunicorn-0.14.2/doc/site/news.rst --- old/gunicorn-0.14.1/doc/site/news.rst 2012-02-25 15:31:05.000000000 +0100 +++ new/gunicorn-0.14.2/doc/site/news.rst 2012-03-16 21:10:53.000000000 +0100 @@ -8,6 +8,21 @@ _TOC_BOT_ +0.14.2 / 2012-03-16 +------------------- + +- add validate_class validator: allows to use a class or a method to + initialize the app during in-code configuration +- add support for max_requests in tornado worker +- add support for disabling x_forwarded_for_header in tornado worker +- gevent_wsgi is now an alias of gevent_pywsgi +- Fix gevent_pywsgi worker + +0.14.1 / 2012-03-02 +------------------- + +- fixing source archive, reducing its size + 0.14.0 / 2012-02-27 ------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/examples/test.py new/gunicorn-0.14.2/examples/test.py --- old/gunicorn-0.14.1/examples/test.py 2012-03-01 07:50:18.000000000 +0100 +++ new/gunicorn-0.14.2/examples/test.py 2012-03-16 21:10:44.000000000 +0100 @@ -21,5 +21,6 @@ ('Content-Length', str(len(data))), ('X-Gunicorn-Version', __version__) ] + start_response(status, response_headers) return iter([data]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/__init__.py new/gunicorn-0.14.2/gunicorn/__init__.py --- old/gunicorn-0.14.1/gunicorn/__init__.py 2012-03-04 08:29:21.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn/__init__.py 2012-03-16 21:10:53.000000000 +0100 @@ -3,6 +3,6 @@ # This file is part of gunicorn released under the MIT license. # See the NOTICE for more information. -version_info = (0, 14, 1) +version_info = (0, 14, 2) __version__ = ".".join(map(str, version_info)) SERVER_SOFTWARE = "gunicorn/%s" % __version__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/config.py new/gunicorn-0.14.2/gunicorn/config.py --- old/gunicorn-0.14.1/gunicorn/config.py 2012-03-01 07:23:12.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn/config.py 2012-03-16 21:10:31.000000000 +0100 @@ -212,6 +212,13 @@ raise TypeError("Not a string: %s" % val) return val.strip() +def validate_class(val): + if inspect.isfunction(val) or inspect.ismethod(val): + val = val() + if inspect.isclass(val): + return val + return validate_string(val) + def validate_callable(arity): def _validate_callable(val): if not callable(val): @@ -338,7 +345,7 @@ section = "Worker Processes" cli = ["-k", "--worker-class"] meta = "STRING" - validator = validate_string + validator = validate_class default = "sync" desc = """\ The type of workers to use. @@ -474,7 +481,7 @@ type = "int" default = 8190 desc= """\ - Limit he allowed size of an HTTP request header field. + Limit the allowed size of an HTTP request header field. Value is a number from 0 (unlimited) to 8190. to set the limit on the allowed size of an HTTP request header field. @@ -740,7 +747,7 @@ section = "Logging" cli = ["--logger-class"] meta = "STRING" - validator = validate_string + validator = validate_class default = "simple" desc = """\ The logger you want to use to log events in gunicorn. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/glogging.py new/gunicorn-0.14.2/gunicorn/glogging.py --- old/gunicorn-0.14.1/gunicorn/glogging.py 2012-02-25 14:42:54.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn/glogging.py 2012-03-16 21:10:44.000000000 +0100 @@ -107,9 +107,7 @@ if cfg.errorlog != "-": # if an error log file is set redirect stdout & stderr to # this log file. - stdout_log = LazyWriter(cfg.errorlog, 'a') - sys.stdout = stdout_log - sys.stderr = stdout_log + sys.stdout = sys.stderr = LazyWriter(cfg.errorlog, 'a') # set gunicorn.error handler self._set_handler(self.error_log, cfg.errorlog, @@ -175,7 +173,12 @@ } # add request headers - atoms.update(dict([("{%s}i" % k.lower(),v) for k, v in req.headers])) + if hasattr(req, 'headers'): + req_headers = req.headers + else: + req_headers = req + + atoms.update(dict([("{%s}i" % k.lower(),v) for k, v in req_headers])) # add response headers atoms.update(dict([("{%s}o" % k.lower(),v) for k, v in resp.headers])) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/util.py new/gunicorn-0.14.2/gunicorn/util.py --- old/gunicorn-0.14.1/gunicorn/util.py 2012-02-19 22:11:32.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn/util.py 2012-03-16 21:10:31.000000000 +0100 @@ -23,6 +23,7 @@ import sys import textwrap import time +import inspect MAXFD = 1024 @@ -103,6 +104,8 @@ return sys.modules[name] def load_class(uri, default="sync", section="gunicorn.workers"): + if inspect.isclass(uri): + return uri if uri.startswith("egg:"): # uses entry points entry_str = uri.split("egg:")[1] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/workers/ggevent.py new/gunicorn-0.14.2/gunicorn/workers/ggevent.py --- old/gunicorn-0.14.1/gunicorn/workers/ggevent.py 2012-03-01 07:42:01.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn/workers/ggevent.py 2012-03-16 11:44:55.000000000 +0100 @@ -96,13 +96,29 @@ gevent.core.dns_init() super(GeventWorker, self).init_process() + +class GeventResponse(object): + + status = None + headers = None + response_length = None + + + def __init__(self, status, headers, clength): + self.status = status + self.headers = headers + self.response_length = clength + class PyWSGIHandler(pywsgi.WSGIHandler): def log_request(self): start = datetime.fromtimestamp(self.time_start) finish = datetime.fromtimestamp(self.time_finish) response_time = finish - start - self.server.log.access(self, self.environ, response_time) + resp = GeventResponse(self.status, self.response_headers, + self.response_length) + req_headers = [h.split(":", 1) for h in self.headers.headers] + self.server.log.access(resp, req_headers, self.environ, response_time) def get_environ(self): env = super(PyWSGIHandler, self).get_environ() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/workers/ggevent_wsgi.py new/gunicorn-0.14.2/gunicorn/workers/ggevent_wsgi.py --- old/gunicorn-0.14.1/gunicorn/workers/ggevent_wsgi.py 2012-02-19 11:27:05.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn/workers/ggevent_wsgi.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,40 +0,0 @@ -# -*- coding: utf-8 - -# -# This file is part of gunicorn released under the MIT license. -# See the NOTICE for more information. - -from datetime import datetime - -from gunicorn.workers.ggevent import BASE_WSGI_ENV, GeventWorker -from gevent import wsgi - - -class WSGIHandler(wsgi.WSGIHandler): - - @property - def status(self): - return ' '.join([str(self.code), self.reason]) - - def log_request(self, length): - self.response_length = length - response_time = datetime.now() - self.time_start - self.server.log.access(self, self.environ, response_time) - - def prepare_env(self): - env = super(WSGIHandler, self).prepare_env() - env['RAW_URI'] = self.request.uri - self.environ = env - return env - - def handle(self): - self.time_start = datetime.now() - super(WSGIHandler, self).handle() - - -class WSGIServer(wsgi.WSGIServer): - base_env = BASE_WSGI_ENV - -class GeventWSGIWorker(GeventWorker): - "The Gevent StreamServer based workers." - server_class = WSGIServer - wsgi_handler = WSGIHandler diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/workers/gtornado.py new/gunicorn-0.14.2/gunicorn/workers/gtornado.py --- old/gunicorn-0.14.1/gunicorn/workers/gtornado.py 2012-02-19 11:27:11.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn/workers/gtornado.py 2012-03-16 11:44:55.000000000 +0100 @@ -10,20 +10,20 @@ import tornado.web except ImportError: raise RuntimeError("You need tornado installed to use this worker.") -from tornado.httpserver import HTTPServer +import tornado.httpserver from tornado.ioloop import IOLoop, PeriodicCallback from tornado.wsgi import WSGIContainer - - from gunicorn.workers.base import Worker from gunicorn import __version__ as gversion + class TornadoWorker(Worker): @classmethod def setup(cls): web = sys.modules.pop("tornado.web") old_clear = web.RequestHandler.clear + def clear(self): old_clear(self) self._headers["Server"] += " (Gunicorn/%s)" % gversion @@ -34,8 +34,16 @@ super(TornadoWorker, self).handle_quit(sig, frame) self.ioloop.stop() + def handle_request(self): + self.nr += 1 + if self.alive and self.nr >= self.max_requests: + self.alive = False + self.log.info("Autorestarting worker after current request.") + self.ioloop.stop() + def watchdog(self): - self.notify() + if self.alive: + self.notify() if self.ppid != os.getppid(): self.log.info("Parent changed, shutting down: %s", self) @@ -44,6 +52,7 @@ def run(self): self.socket.setblocking(0) self.ioloop = IOLoop.instance() + self.alive = True PeriodicCallback(self.watchdog, 1000, io_loop=self.ioloop).start() # Assume the app is a WSGI callable if its not an @@ -52,13 +61,30 @@ if not isinstance(app, tornado.web.Application): app = WSGIContainer(app) - server = HTTPServer(app, io_loop=self.ioloop) - if hasattr(server, "add_socket"): # tornado > 2.0 + # Monkey-patching HTTPConnection.finish to count the + # number of requests being handled by Tornado. This + # will help gunicorn shutdown the worker if max_requests + # is exceeded. + httpserver = sys.modules["tornado.httpserver"] + old_connection_finish = httpserver.HTTPConnection.finish + + def finish(other): + self.handle_request() + old_connection_finish(other) + httpserver.HTTPConnection.finish = finish + sys.modules["tornado.httpserver"] = httpserver + + server = tornado.httpserver.HTTPServer(app, io_loop=self.ioloop) + if hasattr(server, "add_socket"): # tornado > 2.0 server.add_socket(self.socket) - elif hasattr(server, "_sockets"): # tornado 2.0 + elif hasattr(server, "_sockets"): # tornado 2.0 server._sockets[self.socket.fileno()] = self.socket - else: # tornado 1.2 or earlier + else: # tornado 1.2 or earlier server._socket = self.socket + + server.no_keep_alive = self.cfg.keepalive <= 0 + server.xheaders = bool(self.cfg.x_forwarded_for_header) + server.start(num_processes=1) self.ioloop.start() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn.egg-info/PKG-INFO new/gunicorn-0.14.2/gunicorn.egg-info/PKG-INFO --- old/gunicorn-0.14.1/gunicorn.egg-info/PKG-INFO 2012-03-04 08:50:49.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn.egg-info/PKG-INFO 2012-03-16 21:34:35.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: gunicorn -Version: 0.14.1 +Version: 0.14.2 Summary: WSGI HTTP Server for UNIX Home-page: http://gunicorn.org Author: Benoit Chesneau diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn.egg-info/SOURCES.txt new/gunicorn-0.14.2/gunicorn.egg-info/SOURCES.txt --- old/gunicorn-0.14.1/gunicorn.egg-info/SOURCES.txt 2012-03-04 08:50:49.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn.egg-info/SOURCES.txt 2012-03-16 21:34:35.000000000 +0100 @@ -172,7 +172,6 @@ gunicorn/workers/base.py gunicorn/workers/geventlet.py gunicorn/workers/ggevent.py -gunicorn/workers/ggevent_wsgi.py gunicorn/workers/gtornado.py gunicorn/workers/sync.py gunicorn/workers/workertmp.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn.egg-info/entry_points.txt new/gunicorn-0.14.2/gunicorn.egg-info/entry_points.txt --- old/gunicorn-0.14.1/gunicorn.egg-info/entry_points.txt 2012-03-04 08:50:49.000000000 +0100 +++ new/gunicorn-0.14.2/gunicorn.egg-info/entry_points.txt 2012-03-16 21:34:35.000000000 +0100 @@ -1,5 +1,5 @@ - + [console_scripts] gunicorn=gunicorn.app.wsgiapp:run gunicorn_django=gunicorn.app.djangoapp:run @@ -9,7 +9,7 @@ sync=gunicorn.workers.sync:SyncWorker eventlet=gunicorn.workers.geventlet:EventletWorker gevent=gunicorn.workers.ggevent:GeventWorker - gevent_wsgi=gunicorn.workers.ggevent_wsgi:GeventWSGIWorker + gevent_wsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker gevent_pywsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker tornado=gunicorn.workers.gtornado:TornadoWorker diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gunicorn-0.14.1/setup.py new/gunicorn-0.14.2/setup.py --- old/gunicorn-0.14.1/setup.py 2012-01-11 02:43:36.000000000 +0100 +++ new/gunicorn-0.14.2/setup.py 2012-03-16 21:10:31.000000000 +0100 @@ -1,6 +1,6 @@ # -*- coding: utf-8 - # -# This file is part of gunicorn released under the MIT license. +# This file is part of gunicorn released under the MIT license. # See the NOTICE for more information. @@ -45,9 +45,9 @@ zip_safe = False, packages = find_packages(exclude=['examples', 'tests']), include_package_data = True, - + entry_points=""" - + [console_scripts] gunicorn=gunicorn.app.wsgiapp:run gunicorn_django=gunicorn.app.djangoapp:run @@ -57,7 +57,7 @@ sync=gunicorn.workers.sync:SyncWorker eventlet=gunicorn.workers.geventlet:EventletWorker gevent=gunicorn.workers.ggevent:GeventWorker - gevent_wsgi=gunicorn.workers.ggevent_wsgi:GeventWSGIWorker + gevent_wsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker gevent_pywsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker tornado=gunicorn.workers.gtornado:TornadoWorker -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org