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 - suse@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
Denis Bilenko
Phil Schanely
-Chris Lamb
-Jonas Borgström
Evan Mezeske
Darii Denis
Dan Callaghan
Kristian Glass
+Mazdak Rezvani
+Maxim Kamenkov
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 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+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org