Waitress

Waitress es un servidor WSGI hecho en Python puro.

  • Es fácil de configurar.

  • Es compatible directamente con Windows.

  • Es fácil de instalar, ya que no requiere dependencias adicionales ni compilación.

  • No admite las solicitudes de flujo, los datos de las solicitudes completas siempre se almacenan en el búfer.

  • Utiliza un único proceso con múltiples hilos de trabajo.

Esta página describe los aspectos básicos de la ejecución de Waitress. Asegúrese de leer su documentación y waitress-serve --help para entender qué características están disponibles.

Instalación

Crea un virtualenv, instala tu aplicación y luego instala waitress.

$ cd hello-app
$ python -m venv .venv
$ . .venv/bin/activate
$ pip install .  # install your application
$ pip install waitress

Ejecutando

El único argumento necesario para waitress-serve le indica cómo cargar tu aplicación Flask. La sintaxis es {module}:{app}. module es el nombre de importación con puntos del módulo con tu aplicación. app es la variable con la aplicación. Si estás utilizando el patrón de fábrica de aplicaciones, utiliza --call {module}:{factory} en su lugar.

# equivalent to 'from hello import app'
$ waitress-serve --host 127.0.0.1 hello:app

# equivalent to 'from hello import create_app; create_app()'
$ waitress-serve --host 127.0.0.1 --call hello:create_app

Serving on http://127.0.0.1:8080

La opción --host vincula el servidor sólo con el local 127.0.0.1.

No se muestran los registros de cada solicitud, sólo se muestran los errores. El registro se puede configurar a través de la interfaz de Python en lugar de la línea de comandos.

Vinculación externa

Waitress no debe ejecutarse como root porque provocaría que el código de su aplicación se ejecutara como root, lo cual no es seguro. Sin embargo, esto significa que no será posible enlazar con el puerto 80 o 443. En su lugar, debe utilizarse un proxy inverso como nginx o Apache httpd delante de Waitress.

Puedes enlazar con todas las IPs externas en un puerto no privilegiado no especificando la opción --host. No hagas esto cuando utilices una configuración de proxy inversa, de lo contrario será posible eludir el proxy.

0.0.0.0 no es una dirección válida para navegar, sino que debes utilizar una dirección IP específica en tu navegador.