Files
pygeoapi/docs/source/wsgi.rst
T
Francesco Bartoli ab12cbfc92 Add support for Starlette (#223)
* Add starlette app with base route

* Add api route

* Add conformance route

* Add route for collections

* Fix flake8 errors

* Add route for collection items

* Add route for processes

* Add docs for starlette

* Add support for starlette

Add api route


Add conformance route


Add route for collections


Fix flake8 errors


Add route for collection items


Add route for processes


Add docs for starlette

* Make starlette deps into a separate requirements file 


Move imports

* Add comment for starlette requirements

* Fix missing docstring param

* Improve installation docs
2019-09-06 14:25:28 -04:00

48 lines
1.6 KiB
ReStructuredText

.. _wsgi:
WSGI
====
Web Server Gateway Interface (WSGI) is standard for forwarding request to web applications written on Python language. pygeoapi it self
doesn't implement WSGI since it is an API,
therefore it is required a webframework to access HTTP requests and pass the information to pygeoapi
.. code-block:: console
HTTP request --> Flask (flask_app.py) --> pygeopai API
the pygeoapi package integrates `Flask <https://flask.palletsprojects.com/en/1.1.x/>`_ as webframework for defining the API routes/end points and WSGI support.
The flask WSGI server can be easily run as a pygeoapi command with the option `--flask`:
.. code-block:: console
pygeoapi serve --flask
Running a native Flask server is not advisable, the prefered option is as follows:
.. code-block:: console
HTTP request --> WSGI server (gunicorn) --> Flask (flask_app.py) --> pygeoapi API
By having a specific WSGI server, the HTTPS are efficiently processed into threads/processes. The current docker pygeoapi
implement such strategy (see section: :ref:`docker`), it is prefered to implement pygeopai using docker solutions than running host native WSGI servers.
Running gunicorn
----------------
Gunicorn is one of several WSGI supporting server on python (list of server supporting WSGI: `here <https://wsgi.readthedocs.io/en/latest/servers.html>`_). This server
is simple to run from the command, e.g:
.. code-block:: console
gunicorn pygeoapi.flask_app:APP
For extra configuration parameters like port binding, workers please consult the gunicorn `settings <http://docs.gunicorn.org/en/stable/settings.html>`_