Aprende sobre el funcionamiento de import wsgiref en Python

| Última modificación: 28 de enero de 2025 | Tiempo de Lectura: 3 minutos

La interacción de las aplicaciones web con los servidores en Python es un dolor de cabeza… o eso creía yo, hasta que descubrí el módulo de import wsgiref, el cual parece complicado de entender, y su utilidad se torna compleja al principio, pero que después de que entiendes cómo funciona, se convierte en una herramienta esencial para desarrollar aplicaciones web con estándares sólidos. El día de hoy te quiero mostrar cómo funciona import wsgiref en Python y por qué es un sí definitivo para desarrollo de aplicaciones web con servidores.

import wsgiref en Python

¿Qué es wsgiref?

Una forma muy fácil de entender qué es wstiref es si lo comparamos c on un restaurante. Los clientes o usuarios, hacen pedidos o solicitudes HTTP; mientras que la cocina, que en este caso sería el servidor, prepara las órdenes según el menú, que vendría siendo tu aplicación. Para que todo funcione sin problemas necesitas de un mesero, que en este caso es la interfaz WSGI, que es la que toma los pedidos y los entrega.

El módulo de import wsgiref es la implementación de referencia de WSGI, una interfaz que conecta aplicaciones web y servidores. Este módulo facilita la compatibilidad entre aplicaciones web y diferentes servidores, esto causa que tu aplicación sea más portátil y flexible.

Veamos un ejemplo de import wsgiref en donde, supongamos, tienes que crear una aplicación web básica para mostrar datos almacenados en un archivo. Usando import wsgiref, puedes hacerlo así:

from wsgiref.simple_server import make_server
from wsgiref.util import setup_testing_defaults

def app(environ, start_response):
setup_testing_defaults(environ)
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'Esta es una prueba usando wsgiref']

with make_server('', 8000, app) as server:
print("Prueba en http://localhost:8000")
server.serve_forever()

Este código configura un servidor local que responde con un mensaje de texto al acceder desde un navegador.

¿Qué funcionalidades nos ofrece import wsgiref?

El módulo de import wsgiref trae incluidas algunas herramientas y utilidades que cubren diferentes aspectos del desarrollo web. Entre esas funciones que puedes aprovechar están:

wsgiref.util: utilidades para el entorno WSGI

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Este submódulo ofrece funciones que nos sirven para manejar entornos WSGI. Algunas de las funciones más comunes incluyen:

  • guess_scheme: Devuelve si el esquema de la solicitud es http o https.
  • request_uri: Reconstruye la URI completa de la solicitud, incluyendo la cadena de consulta si es necesario.
  • setup_testing_defaults: Configura valores por defecto en el entorno para realizar pruebas sin necesidad de datos reales.

Estas funciones te servirán para configurar y probar aplicaciones WSGI sin preocuparte por los detalles de implementación.

wsgiref.headers: manipulación de encabezados HTTP

Este submódulo proporciona la clase Headers, que simplifica el manejo de encabezados HTTP. Por medio de esta clase puedes añadir, obtener o eliminar encabezados de forma similar a trabajar con un diccionario. Por ejemplo:

from wsgiref.headers import Headers

headers = Headers()
headers.add_header('Content-Type', 'text/plain; charset=utf-8')
print(headers.get('Content-Type')) # Salida: text/plain; charset=utf-8

wsgiref.simple_server: un servidor WSGI básico

Si necesitas un servidor HTTP sencillo para pruebas o demostraciones, wsgiref.simple_server es una gran opción. Puedes crear un servidor en pocos pasos:

from wsgiref.simple_server import make_server

def simple_app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'Hola, mundo!']

with make_server('', 8000, simple_app) as server:
print("Sirviendo en el puerto 8000...")
server.serve_forever()

Con este ejemplo, puedes ejecutar una aplicación básica que responde con “Hola, mundo!” en tu navegador.

wsgiref.validate: comprobador de conformidad

Este submódulo valida que las aplicaciones y servidores cumplan con la especificación WSGI (PEP 3333). Puede servirle mucho a desarrolladores que crean nuevos frameworks o servidores WSGI.

from wsgiref.validate import validator

@validator
def app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'App validada correctamente']

wsgiref.handlers: clases base para servidores y puertas de enlace

Las clases de este submódulo ayudan a implementar servidores y gateways personalizados. Aunque no son comunes en proyectos estándar, son útiles para casos avanzados.

Si quieres seguir aprendiendo sobre temáticas similares a esta, no dudes en unirte a nuestro bootcamp de programación desde cero, en el cual entenderás cómo funcionan las aplicaciones y empezarás a crear tus primeros hola mundo, para ir avanzando poco a poco, mejorando tu nivel y adquiriendo habilidades que te permitirán escalar en tus metas. No te pierdas de esta gran oportunidad e inicia ahora.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado