¿Cuál es la diferencia entre ejecutar aplicaciones web Python de forma normal y ejecutarlas en wsgi?

¿Cuál es la diferencia entre ejecutar aplicaciones web Python de forma normal y ejecutarlas en wsgi?

Sé que para ejecutar una aplicación web Python (una aplicación desarrollada con marcos como Flask y Django) en el servidor, es necesario implementarla usando cosas como uwsgi, wsgi.. gunicorn.. etc, y configurarla para que se ejecute con el servidores web como apache2& nginx.

Pero sé que puedo simplemente ejecutarla python my_app.pyy la aplicación funcionará en el servidor usando puertos como: mywebsite.com:5000. Y puedo usar un proxy en el servidor web para redirigir mywebsite.com:5000a algo así test.example.comcomo a cualquier lugar que desee.

Entonces, ¿cuál es la diferencia entre las dos formas? ¿Cuál debería usar?

Gracias.

Respuesta1

Este no es el caso con todos los marcos, pero django y flask cuando se ejecuta en su modo dev http, al que hizo referencia, tiene un solo subproceso.

Por lo tanto, el servidor solo puede manejar una única conexión a la vez. Entonces, si dos conexiones entran juntas, el servidor manejará una y hará esperar a la otra.

Un servidor wsgi con apache/nginx al frente manejará muchas conexiones a la vez.

información relacionada