Fix usage docs.

This commit is contained in:
Paul J. Davis 2010-04-23 10:11:02 -04:00
parent 0c26280486
commit 676cf5c4f8
4 changed files with 37 additions and 48 deletions

View File

@ -52,27 +52,7 @@
<p>Gunicorn 0.5 introduced the ability to use a Python configuration file. Gunicorn will look for <tt class="docutils literal">gunicorn.conf.py</tt> in the current working directory or what ever path is specified on the command line with the <tt class="docutils literal"><span class="pre">-c</span></tt> option.</p>
<div class="section" id="example-gunicorn-conf-py">
<h1>Example gunicorn.conf.py</h1>
<p>arbiter=&quot;egg:gunicorn&quot;,
backlog=2048,
bind='127.0.0.1:8000',
daemon=False,
debug=False,
default_proc_name = os.getcwd(),
group=None,
keepalive=2,
logfile='-',
loglevel='info',
pidfile=None,
proc_name = None,
spew=False,
timeout=30,
tmp_upload_dir=None,
umask=&quot;0&quot;,
user=None,
workers=1,
worker_connections=1000,</p>
<pre class="literal-block">
arbiter = &quot;egg:gunicorn&quot; # The arbiter to use for worker management
backlog = 2048 # The listen queue size for the server socket
bind = &quot;127.0.0.1:8000&quot; # Or &quot;unix:/tmp/gunicorn.sock&quot;
daemon = False # Whether work in the background
@ -89,6 +69,7 @@ proc_name = None # Change the process name
spew=False # Display trace
timeout=30 # Worker timeout
tmp_upload_dir = None # Set path used to store temporary uploads
worker_class = &quot;egg:gunicorn#sync&quot; # The type of request processing to use
worker_connections=1000 # Maximum number of simultaneous connections
after_fork=lambda server, worker: server.log.info(
@ -104,16 +85,15 @@ before_exec=lambda server: server.log.info(&quot;Forked child, reexecuting&quot;
<dl class="docutils">
<dt>after_fork(server, worker):</dt>
<dd>This is called by the worker after initialization.</dd>
<dt>arbiter:</dt>
<dd><p class="first">The arbiter manages the worker processes that actually serve clients. It
handles launching new workers and killing misbehaving workers among
other things. By default the arbiter is <cite>egg:gunicorn#main</cite>. This arbiter
<dt>worker_class:</dt>
<dd><p class="first">Define the type of worker to use. A worker process all the requests send by
the arbiter.By default the worker_class is <cite>egg:gunicorn#sync</cite>. This worker
only supports fast request handling requiring a buffering HTTP proxy.</p>
<p class="last">If your application requires the ability to handle prolonged requests to
provide long polling, comet, or calling an external web service you'll
need to use an async arbiter. Gunicorn has two async arbiters built in
using <a class="reference external" href="http://eventlet.net">Eventlet</a> or <a class="reference external" href="http://gevent.org">Gevent</a>. You can also use the Evenlet arbiter with
the <a class="reference external" href="http://twistedmatrix.com">Twisted</a> helper.</p>
need to use an async worker. Gunicorn has three async workers built in
using <a class="reference external" href="http://www.tornadoweb.org/">Tornado</a>, <a class="reference external" href="http://eventlet.net">Eventlet</a> or <a class="reference external" href="http://gevent.org">Gevent</a>. You can also use the Evenlet
worker with the <a class="reference external" href="http://twistedmatrix.com">Twisted</a> helper.</p>
</dd>
<dt>backlog:</dt>
<dd>The backlog parameter defines the maximum length for the queue of pending
@ -156,6 +136,8 @@ installed. This alters the process names listed by commands like <tt class="docu
<dt>worker_connections:</dt>
<dd>Number of simultaneous connections a worker can handle when used with
Eventlet or Gevent arbiter. The default is 1000.</dd>
<dt>timeout:</dt>
<dd>Set worker timeout.</dd>
<dt>tmp_upload_dir:</dt>
<dd>Set the path used to store temporarily the body of the request.</dd>
</dl>

View File

@ -50,6 +50,13 @@
<div class="document" id="news">
<h1 class="title">News</h1>
<div class="section" id="id1">
<h1>0.8.0 / 2004-04-22</h1>
<ul class="simple">
<li>Refactored Worker management for better async support. Now use the -k option to set the type of request processing to use</li>
<li>Added support for <a class="reference external" href="http://www.tornadoweb.org/">Tornado</a> .</li>
</ul>
</div>
<div class="section" id="id2">
<h1>0.7.2 / 2010-04-15</h1>
<ul class="simple">
<li>Added --spew option to help debugging (install a Trace hook)</li>
@ -57,13 +64,13 @@
<li>Fix a bug in start_response on error</li>
</ul>
</div>
<div class="section" id="id2">
<div class="section" id="id3">
<h1>0.7.1 / 2010-04-01</h1>
<ul class="simple">
<li>Fix bug when responses have no body.</li>
</ul>
</div>
<div class="section" id="id3">
<div class="section" id="id4">
<h1>0.7.0 / 2010-03-26</h1>
<ul class="simple">
<li>Added support for <a class="reference external" href="faq.html">sleepy applications</a> using <a class="reference external" href="http://eventlet.net">Eventlet</a> or <a class="reference external" href="http://gevent.org">Gevent</a>.</li>
@ -73,28 +80,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="id4">
<div class="section" id="id5">
<h1>0.6.5 / 2010-03-11</h1>
<ul class="simple">
<li>Fix pidfile</li>
<li>Fix Exception Error</li>
</ul>
</div>
<div class="section" id="id5">
<div class="section" id="id6">
<h1>0.6.4 / 2010-03-08</h1>
<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="id6">
<div class="section" id="id7">
<h1>0.6.3 / 2010-03-07</h1>
<ul class="simple">
<li>Make HTTP parsing faster.</li>
<li>Some fixes (see <a class="reference external" href="http://github.com/benoitc/gunicorn/commits/master">logs</a>)</li>
</ul>
</div>
<div class="section" id="id7">
<div class="section" id="id8">
<h1>0.6.2 / 2010-03-01</h1>
<ul class="simple">
<li>Added support for chunked response.</li>
@ -104,7 +111,7 @@
<li>Workers are now murdered by age (the oldest is killed first).</li>
</ul>
</div>
<div class="section" id="id8">
<div class="section" id="id9">
<h1>0.6.1 / 2010-02-24</h1>
<ul class="simple">
<li>Added gunicorn config file support for django admin command</li>
@ -112,21 +119,21 @@
<li>Removed TTIN/TTOU from workers which blocked other signals.</li>
</ul>
</div>
<div class="section" id="id9">
<div class="section" id="id10">
<h1>0.6 / 2010-02-22</h1>
<ul class="simple">
<li>Added setproctitle</li>
<li>Change privilege switch behaviour. We now work like NGINX, master keeps the permissions, new uid/gid permissions are only set for workers.</li>
</ul>
</div>
<div class="section" id="id10">
<div class="section" id="id11">
<h1>0.5.1 / 2010-02-22</h1>
<ul class="simple">
<li>Fix umask</li>
<li>Added debian packaging</li>
</ul>
</div>
<div class="section" id="id11">
<div class="section" id="id12">
<h1>0.5 / 2010-02-20</h1>
<ul class="simple">
<li>Added <a class="reference external" href="configuration.html">configuration file</a> handler.</li>

View File

@ -59,19 +59,19 @@
<p>To launch the <a class="reference external" href="http://github.com/benoitc/gunicorn/blob/master/examples/test.py">example application</a> packaged with Gunicorn:</p>
<pre class="literal-block">
$ cd /path/to/gunicorn/examples/
$ gunicorn --workers=2 test:app
$ gunicorn -w 2 test:app
</pre>
<p>The module <tt class="docutils literal">test:app</tt> specifies the complete module name and WSGI callable.
You can replace it with anything that is available on your <tt class="docutils literal">PYTHONPATH</tt> like
such:</p>
<pre class="literal-block">
$ cd ~/
$ gunicorn --workers=12 awesomeproject.wsgi.main:main_app
$ gunicorn -w 12 awesomeproject.wsgi.main:main_app
</pre>
<p>To launch the <a class="reference external" href="http://github.com/benoitc/gunicorn/blob/master/examples/websocket.py">websocket example</a> application using <a class="reference external" href="http://eventlet.net">Eventlet</a>:</p>
<pre class="literal-block">
$ cd /path/to/gunicorn/examples/
$ gunicorn -w 12 -a &quot;egg:gunicorn#eventlet&quot; websocket:app
$ gunicorn -w 12 -k &quot;egg:gunicorn#eventlet&quot; websocket:app
</pre>
<p>You should then be able to visit <tt class="docutils literal"><span class="pre">http://localhost:8000</span></tt> to see output.</p>
<div class="section" id="full-command-line-usage">
@ -85,11 +85,11 @@ Options:
Config file. [none]
-b BIND, --bind=BIND Adress to listen on. Ex. 127.0.0.1:8000 or
unix:/tmp/gunicorn.sock
-k WORKERCLASS, --worker-class=WORKERCLASS
The type of request processing to use
[egg:gunicorn#sync]
-w WORKERS, --workers=WORKERS
Number of workers to spawn. [1]
-a ARBITER, --arbiter=ARBITER
gunicorn arbiter entry point or module
[egg:gunicorn#main]
-p PIDFILE, --pid=PIDFILE
set the background PID FILE
-D, --daemon Run daemonized in the background.

View File

@ -14,19 +14,19 @@ WSGI applications
To launch the `example application`_ packaged with Gunicorn::
$ cd /path/to/gunicorn/examples/
$ gunicorn --workers=2 test:app
$ gunicorn -w 2 test:app
The module ``test:app`` specifies the complete module name and WSGI callable.
You can replace it with anything that is available on your ``PYTHONPATH`` like
such::
$ cd ~/
$ gunicorn --workers=12 awesomeproject.wsgi.main:main_app
$ gunicorn -w 12 awesomeproject.wsgi.main:main_app
To launch the `websocket example`_ application using `Eventlet`_::
$ cd /path/to/gunicorn/examples/
$ gunicorn -w 12 -a "egg:gunicorn#eventlet" websocket:app
$ gunicorn -w 12 -k "egg:gunicorn#eventlet" websocket:app
You should then be able to visit ``http://localhost:8000`` to see output.
@ -44,8 +44,8 @@ Full command line usage
-b BIND, --bind=BIND Adress to listen on. Ex. 127.0.0.1:8000 or
unix:/tmp/gunicorn.sock
-k WORKERCLASS, --worker-class=WORKERCLASS
The type of request processing to use
[egg:gunicorn#sync]
The type of request processing to use
[egg:gunicorn#sync]
-w WORKERS, --workers=WORKERS
Number of workers to spawn. [1]
-p PIDFILE, --pid=PIDFILE