summaryrefslogtreecommitdiff
path: root/docs/_locale/_pot/deployment.pot
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_locale/_pot/deployment.pot')
-rw-r--r--docs/_locale/_pot/deployment.pot167
1 files changed, 75 insertions, 92 deletions
diff --git a/docs/_locale/_pot/deployment.pot b/docs/_locale/_pot/deployment.pot
index 8ddf019..35712d0 100644
--- a/docs/_locale/_pot/deployment.pot
+++ b/docs/_locale/_pot/deployment.pot
@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2009-2017, Marcel Hellkamp
+# Copyright (C) 2009-2020, Marcel Hellkamp
# This file is distributed under the same license as the Bottle package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Bottle 0.13-dev\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-13 21:49+0100\n"
+"POT-Creation-Date: 2020-12-31 18:35+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,135 +25,131 @@ msgid "The bottle :func:`run` function, when called without any parameters, star
msgstr ""
#: ../../deployment.rst:31
-msgid "To get your application available to the outside world, specify the IP of the interface the server should listen to (e.g. ``run(host='192.168.0.1')``) or let the server listen to all interfaces at once (e.g. ``run(host='0.0.0.0')``). The listening port can be changed in a similar way, but you need root or admin rights to choose a port below 1024. Port 80 is the standard for HTTP servers::"
+msgid "To get your application available to the outside world, specify the IP the server should listen to (e.g. ``run(host='192.168.0.1')``) or let the server listen to all interfaces at once (e.g. ``run(host='0.0.0.0')``). The listening port can be changed in a similar way, but you need root or admin rights to choose a port below 1024. Port 80 is the standard for HTTP servers::"
msgstr ""
-#: ../../deployment.rst:36
+#: ../../deployment.rst:37
msgid "Server Options"
msgstr ""
-#: ../../deployment.rst:38
-msgid "The built-in default server is based on `wsgiref WSGIServer <http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server>`_. This non-threading HTTP server is perfectly fine for development and early production, but may become a performance bottleneck when server load increases. There are three ways to eliminate this bottleneck:"
+#: ../../deployment.rst:39
+msgid "The built-in default server is based on `wsgiref WSGIServer <http://docs.python.org/library/wsgiref.html#module-wsgiref.simple_server>`_. This non-threading HTTP server is perfectly fine for development, but may become a performance bottleneck when server load increases. There are three ways to eliminate this bottleneck:"
msgstr ""
-#: ../../deployment.rst:40
-msgid "Use a different server that is either multi-threaded or asynchronous."
+#: ../../deployment.rst:41
+msgid "Use a different server that is either multi-threaded or supports asynchronous IO."
msgstr ""
-#: ../../deployment.rst:41
+#: ../../deployment.rst:42
msgid "Start multiple server processes and spread the load with a load-balancer."
msgstr ""
-#: ../../deployment.rst:42
+#: ../../deployment.rst:43
msgid "Do both."
msgstr ""
-#: ../../deployment.rst:44
+#: ../../deployment.rst:45
msgid "**Multi-threaded** servers are the 'classic' way to do it. They are very robust, reasonably fast and easy to manage. As a drawback, they can only handle a limited number of connections at the same time and utilize only one CPU core due to the \"Global Interpreter Lock\" (GIL) of the Python runtime. This does not hurt most applications, they are waiting for network IO most of the time anyway, but may slow down CPU intensive tasks (e.g. image processing)."
msgstr ""
-#: ../../deployment.rst:46
-msgid "**Asynchronous** servers are very fast, can handle a virtually unlimited number of concurrent connections and are easy to manage. To take full advantage of their potential, you need to design your application accordingly and understand the concepts of the specific server."
+#: ../../deployment.rst:47
+msgid "**Asynchronous IO** servers are very fast, can handle a virtually unlimited number of concurrent connections and are easy to manage. To take full advantage of their potential, you need to design your application accordingly and understand the concepts of the specific server."
msgstr ""
-#: ../../deployment.rst:48
+#: ../../deployment.rst:49
msgid "**Multi-processing** (forking) servers are not limited by the GIL and utilize more than one CPU core, but make communication between server instances more expensive. You need a database or external message query to share state between processes, or design your application so that it does not need any shared state. The setup is also a bit more complicated, but there are good tutorials available."
msgstr ""
-#: ../../deployment.rst:51
+#: ../../deployment.rst:52
msgid "Switching the Server Backend"
msgstr ""
-#: ../../deployment.rst:53
+#: ../../deployment.rst:54
msgid "The easiest way to increase performance is to install a multi-threaded server library like paste_ or cherrypy_ and tell Bottle to use that instead of the single-threaded default server::"
msgstr ""
-#: ../../deployment.rst:57
+#: ../../deployment.rst:58
msgid "Bottle ships with a lot of ready-to-use adapters for the most common WSGI servers and automates the setup process. Here is an incomplete list:"
msgstr ""
-#: ../../deployment.rst:60
+#: ../../deployment.rst:61
msgid "Name"
msgstr ""
-#: ../../deployment.rst:60
+#: ../../deployment.rst:61
msgid "Homepage"
msgstr ""
-#: ../../deployment.rst:60
+#: ../../deployment.rst:61
msgid "Description"
msgstr ""
-#: ../../deployment.rst:62
+#: ../../deployment.rst:63
msgid "cgi"
msgstr ""
-#: ../../deployment.rst:62
+#: ../../deployment.rst:63
msgid "Run as CGI script"
msgstr ""
-#: ../../deployment.rst:63
+#: ../../deployment.rst:64
msgid "flup"
msgstr ""
-#: ../../deployment.rst:63
+#: ../../deployment.rst:64
msgid "flup_"
msgstr ""
-#: ../../deployment.rst:63
+#: ../../deployment.rst:64
msgid "Run as FastCGI process"
msgstr ""
-#: ../../deployment.rst:64
+#: ../../deployment.rst:65
msgid "gae"
msgstr ""
-#: ../../deployment.rst:64
+#: ../../deployment.rst:65
msgid "gae_"
msgstr ""
-#: ../../deployment.rst:64
+#: ../../deployment.rst:65
msgid "Helper for Google App Engine deployments"
msgstr ""
-#: ../../deployment.rst:65
+#: ../../deployment.rst:66
msgid "wsgiref"
msgstr ""
-#: ../../deployment.rst:65
+#: ../../deployment.rst:66
msgid "wsgiref_"
msgstr ""
-#: ../../deployment.rst:65
+#: ../../deployment.rst:66
msgid "Single-threaded default server"
msgstr ""
-#: ../../deployment.rst:66
+#: ../../deployment.rst:67
msgid "cherrypy"
msgstr ""
-#: ../../deployment.rst:66
+#: ../../deployment.rst:67
msgid "cherrypy_"
msgstr ""
-#: ../../deployment.rst:66
+#: ../../deployment.rst:67
msgid "Multi-threaded and very stable"
msgstr ""
-#: ../../deployment.rst:67
+#: ../../deployment.rst:68
msgid "paste"
msgstr ""
-#: ../../deployment.rst:67
+#: ../../deployment.rst:68
msgid "paste_"
msgstr ""
-#: ../../deployment.rst:67
-msgid "Multi-threaded, stable, tried and tested"
-msgstr ""
-
#: ../../deployment.rst:68
-msgid "Multi-threaded"
+msgid "Multi-threaded, stable, tried and tested"
msgstr ""
#: ../../deployment.rst:69
@@ -214,158 +210,145 @@ msgid "diesel_"
msgstr ""
#: ../../deployment.rst:74
-msgid "fapws3"
-msgstr ""
-
-#: ../../deployment.rst:74
-msgid "fapws3_"
-msgstr ""
-
-#: ../../deployment.rst:74
-msgid "Asynchronous (network side only), written in C"
-msgstr ""
-
-#: ../../deployment.rst:75
msgid "tornado"
msgstr ""
-#: ../../deployment.rst:75
+#: ../../deployment.rst:74
msgid "tornado_"
msgstr ""
-#: ../../deployment.rst:75
+#: ../../deployment.rst:74
msgid "Asynchronous, powers some parts of Facebook"
msgstr ""
-#: ../../deployment.rst:76
+#: ../../deployment.rst:75
msgid "twisted"
msgstr ""
-#: ../../deployment.rst:76
+#: ../../deployment.rst:75
msgid "twisted_"
msgstr ""
-#: ../../deployment.rst:76
+#: ../../deployment.rst:75
msgid "Asynchronous, well tested but... twisted"
msgstr ""
-#: ../../deployment.rst:77
+#: ../../deployment.rst:76
msgid "meinheld"
msgstr ""
-#: ../../deployment.rst:77
+#: ../../deployment.rst:76
msgid "meinheld_"
msgstr ""
-#: ../../deployment.rst:77
+#: ../../deployment.rst:76
msgid "Asynchronous, partly written in C"
msgstr ""
-#: ../../deployment.rst:78
+#: ../../deployment.rst:77
msgid "bjoern"
msgstr ""
-#: ../../deployment.rst:78
+#: ../../deployment.rst:77
msgid "bjoern_"
msgstr ""
-#: ../../deployment.rst:78
+#: ../../deployment.rst:77
msgid "Asynchronous, very fast and written in C"
msgstr ""
-#: ../../deployment.rst:79
+#: ../../deployment.rst:78
msgid "auto"
msgstr ""
-#: ../../deployment.rst:79
+#: ../../deployment.rst:78
msgid "Automatically selects an available server adapter"
msgstr ""
-#: ../../deployment.rst:82
+#: ../../deployment.rst:81
msgid "The full list is available through :data:`server_names`."
msgstr ""
-#: ../../deployment.rst:84
+#: ../../deployment.rst:83
msgid "If there is no adapter for your favorite server or if you need more control over the server setup, you may want to start the server manually. Refer to the server documentation on how to run WSGI applications. Here is an example for paste_::"
msgstr ""
-#: ../../deployment.rst:93
+#: ../../deployment.rst:91
msgid "Apache mod_wsgi"
msgstr ""
-#: ../../deployment.rst:95
+#: ../../deployment.rst:93
msgid "Instead of running your own HTTP server from within Bottle, you can attach Bottle applications to an `Apache server <apache>`_ using mod_wsgi_."
msgstr ""
-#: ../../deployment.rst:97
+#: ../../deployment.rst:95
msgid "All you need is an ``app.wsgi`` file that provides an ``application`` object. This object is used by mod_wsgi to start your application and should be a WSGI-compatible Python callable."
msgstr ""
-#: ../../deployment.rst:99
+#: ../../deployment.rst:97
msgid "File ``/var/www/yourapp/app.wsgi``::"
msgstr ""
-#: ../../deployment.rst:110
+#: ../../deployment.rst:108
msgid "The Apache configuration may look like this::"
msgstr ""
#: ../../deployment.rst:126
-msgid "With newer versions of Apache (2.4) use a configuration similar to this::"
+msgid "uWSGI"
+msgstr ""
+
+#: ../../deployment.rst:128
+msgid "uWSGI_ is a modern alternative to FastCGI and the recommended deployment option on servers like nginx_, lighttpd_, and cherokee_. The uWSGI project provides an application server that runs your application, and defines a protocol that frontend webservers can speak to. Have a look at the excellent `Quickstart for Python/WSGI applications <https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html>`_."
msgstr ""
-#: ../../deployment.rst:144
+#: ../../deployment.rst:132
msgid "Google AppEngine"
msgstr ""
-#: ../../deployment.rst:148
+#: ../../deployment.rst:136
msgid "New App Engine applications using the Python 2.7 runtime environment support any WSGI application and should be configured to use the Bottle application object directly. For example suppose your application's main module is ``myapp.py``::"
msgstr ""
-#: ../../deployment.rst:158
+#: ../../deployment.rst:146
msgid "Then you can configure App Engine's ``app.yaml`` to use the ``app`` object like so::"
msgstr ""
-#: ../../deployment.rst:169
-msgid "Bottle also provides a ``gae`` server adapter for legacy App Engine applications using the Python 2.5 runtime environment. It works similar to the ``cgi`` adapter in that it does not start a new HTTP server, but prepares and optimizes your application for Google App Engine and makes sure it conforms to their API::"
-msgstr ""
-
-#: ../../deployment.rst:173
+#: ../../deployment.rst:158
msgid "It is always a good idea to let GAE serve static files directly. Here is example for a working ``app.yaml`` (using the legacy Python 2.5 runtime environment)::"
msgstr ""
-#: ../../deployment.rst:189
+#: ../../deployment.rst:175
msgid "Load Balancer (Manual Setup)"
msgstr ""
-#: ../../deployment.rst:191
+#: ../../deployment.rst:177
msgid "A single Python process can utilize only one CPU at a time, even if there are more CPU cores available. The trick is to balance the load between multiple independent Python processes to utilize all of your CPU cores."
msgstr ""
-#: ../../deployment.rst:193
+#: ../../deployment.rst:179
msgid "Instead of a single Bottle application server, you start one instance for each CPU core available using different local port (localhost:8080, 8081, 8082, ...). You can choose any server adapter you want, even asynchronous ones. Then a high performance load balancer acts as a reverse proxy and forwards each new requests to a random port, spreading the load between all available back-ends. This way you can use all of your CPU cores and even spread out the load between different physical servers."
msgstr ""
-#: ../../deployment.rst:195
+#: ../../deployment.rst:181
msgid "One of the fastest load balancers available is Pound_ but most common web servers have a proxy-module that can do the work just fine."
msgstr ""
-#: ../../deployment.rst:197
+#: ../../deployment.rst:183
msgid "Pound example::"
msgstr ""
-#: ../../deployment.rst:215
+#: ../../deployment.rst:201
msgid "Apache example::"
msgstr ""
-#: ../../deployment.rst:223
+#: ../../deployment.rst:209
msgid "Lighttpd example::"
msgstr ""
-#: ../../deployment.rst:235
+#: ../../deployment.rst:221
msgid "Good old CGI"
msgstr ""
-#: ../../deployment.rst:237
+#: ../../deployment.rst:223
msgid "A CGI server starts a new process for each request. This adds a lot of overhead but is sometimes the only option, especially on cheap hosting packages. The `cgi` server adapter does not actually start a CGI server, but transforms your bottle application into a valid CGI application::"
msgstr ""
-