Touch up and integrate docs on deploying Flask.
This commit is contained in:
parent
5127b8bd26
commit
207006f4c3
6 changed files with 145 additions and 123 deletions
|
|
@ -1,11 +1,11 @@
|
|||
.. _deploying-other-servers:
|
||||
|
||||
Other Servers
|
||||
=============
|
||||
|
||||
There are popular servers written in Python that allow the execution of
|
||||
WSGI applications as well. Keep in mind though that some of these servers
|
||||
were written for very specific applications and might not work as well for
|
||||
standard WSGI application such as Flask powered ones.
|
||||
|
||||
There are popular servers written in Python that allow the execution of WSGI
|
||||
applications as well. These servers stand alone when they run; you can proxy
|
||||
to them from your web server.
|
||||
|
||||
Tornado
|
||||
--------
|
||||
|
|
@ -15,12 +15,12 @@ server and tools that power `FriendFeed`_. Because it is non-blocking and
|
|||
uses epoll, it can handle thousands of simultaneous standing connections,
|
||||
which means it is ideal for real-time web services. Integrating this
|
||||
service with Flask is a trivial task::
|
||||
|
||||
|
||||
from tornado.wsgi import WSGIContainer
|
||||
from tornado.httpserver import HTTPServer
|
||||
from tornado.ioloop import IOLoop
|
||||
from yourapplication import app
|
||||
|
||||
|
||||
http_server = HTTPServer(WSGIContainer(app))
|
||||
http_server.listen(5000)
|
||||
IOLoop.instance().start()
|
||||
|
|
@ -29,7 +29,6 @@ service with Flask is a trivial task::
|
|||
.. _Tornado: http://www.tornadoweb.org/
|
||||
.. _FriendFeed: http://friendfeed.com/
|
||||
|
||||
|
||||
Gevent
|
||||
-------
|
||||
|
||||
|
|
@ -47,7 +46,6 @@ event loop::
|
|||
.. _greenlet: http://codespeak.net/py/0.9.2/greenlet.html
|
||||
.. _libevent: http://monkey.org/~provos/libevent/
|
||||
|
||||
|
||||
Gunicorn
|
||||
--------
|
||||
|
||||
|
|
@ -57,19 +55,25 @@ and `greenlet`_. Running a Flask application on this server is quite simple::
|
|||
|
||||
gunicorn myproject:app
|
||||
|
||||
`Gunicorn`_ provides many command-line options -- see ``gunicorn -h``.
|
||||
For example, to run a Flask application with 4 worker processes (``-w
|
||||
4``) binding to localhost port 4000 (``-b 127.0.0.1:4000``)::
|
||||
|
||||
gunicorn -w 4 -b 127.0.0.1:4000 myproject:app
|
||||
|
||||
.. _Gunicorn: http://gunicorn.org/
|
||||
.. _eventlet: http://eventlet.net/
|
||||
.. _greenlet: http://codespeak.net/py/0.9.2/greenlet.html
|
||||
|
||||
|
||||
Proxy Setups
|
||||
------------
|
||||
|
||||
If you deploy your application behind an HTTP proxy you will need to
|
||||
rewrite a few headers in order for the application to work. The two
|
||||
problematic values in the WSGI environment usually are `REMOTE_ADDR` and
|
||||
`HTTP_HOST`. Werkzeug ships a fixer that will solve some common setups,
|
||||
but you might want to write your own WSGI middleware for specific setups.
|
||||
If you deploy your application using one of these servers behind an HTTP
|
||||
proxy you will need to rewrite a few headers in order for the
|
||||
application to work. The two problematic values in the WSGI environment
|
||||
usually are `REMOTE_ADDR` and `HTTP_HOST`. Werkzeug ships a fixer that
|
||||
will solve some common setups, but you might want to write your own WSGI
|
||||
middleware for specific setups.
|
||||
|
||||
The most common setup invokes the host being set from `X-Forwarded-Host`
|
||||
and the remote address from `X-Forwarded-For`::
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue