WSGI Servers

Stand-alone WSGI servers typically use less resources than traditional webservers and provide top performance [1].

Gunicorn

Gunicorn (Green Unicorn) is a pure-Python WSGIserver used to serve Python applications. Unlike other Python web servers,it has a thoughtful user interface, and is extremely easy to use andconfigure.

Gunicorn has sane and reasonable defaults for configurations. However, someother servers, like uWSGI, are tremendously more customizable, and therefore,are much more difficult to effectively use.

Gunicorn is the recommended choice for new Python web applications today.

Waitress

Waitress is a pure-Python WSGI serverthat claims “very acceptable performance”. Its documentation is not verydetailed, but it does offer some nice functionality that Gunicorn doesn’t have(e.g. HTTP request buffering).

Waitress is gaining popularity within the Python web development community.

uWSGI

uWSGI is a full stack for buildinghosting services. In addition to process management, process monitoring,and other functionality, uWSGI acts as an application server for variousprogramming languages and protocols – including Python and WSGI. uWSGI caneither be run as a stand-alone web router, or be run behind a full webserver (such as Nginx or Apache). In the latter case, a web server canconfigure uWSGI and an application’s operation over theuwsgi protocol.uWSGI’s web server support allows for dynamically configuringPython, passing environment variables, and further tuning. For full details,see uWSGI magicvariables.

I do not recommend using uWSGI unless you know why you need it.