Aun recuerdo la primera vez que tuve que crear un servidor web de lo más básico. Me llegué a preguntar cómo podía lograr mi objetivo sin complicarme demasiado con configuraciones o herramientas adicionales. Fue por este tiempo que encontré que el módulo import http.server en Python sirve a esta función. Este es un módulo que no solo permite levantar un servidor rápidamente sino que también ayuda a entender mejor cómo funcionan los servidores HTTP. Por eso, en el artículo de hoy quiero explicarte qué es y cómo puedes usarlo para tus propios proyectos.
¿Qué es import http.server?
El módulo import http.server dentro de python forma parte de las bibliotecas estándar y es usado para implementar servidores HTTP básicos. Se puede usar en tareas como:
- Servir archivos locales a través de HTTP.
- Probar aplicaciones web en desarrollo.
- Crear prototipos rápidos de funcionalidades relacionadas con HTTP.
Este módulo incluye varias clases que te permiten configurar y personalizar un servidor HTTP, como HTTPServer y SimpleHTTPRequestHandler. Pese a que es muy útil en el desarrollo, es bien sabido que no está diseñado para usarse en entornos de producción, ya que carece de características de seguridad más desarrolladas.
¿Cómo funciona?
Cuando usas import http.server, grosso modo, le estás diciendo a Python que quieres iniciar un servidor web local. Este servidor puede servir contenido estático como archivos HTML, CSS o imágenes, e incluso manejar solicitudes más complejas si personalizas sus clases.
Veamos un ejemplo de cómo iniciar un servidor web con import http.server:
import http.server
import socketserver
PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print(f"Servidor corriendo en el puerto {PORT}")
httpd.serve_forever()
Este código levanta un servidor en el puerto 8000 y sirve los archivos del directorio actual. Si abres tu navegador y visitas http://localhost:8000
, verás el contenido servido por el servidor.
¿Cuándo recomiendo usar import http.server?
🔴 ¿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 semanaEste módulo es una excelente opción en los siguientes casos:
- Si quieres servir archivos estáticos para pruebas locales.
- Estás desarrollando una aplicación web y necesitas un servidor rápido para pruebas.
- Buscas aprender cómo funcionan las solicitudes HTTP desde el lado del servidor.
Si necesitas un servidor más robusto y con mejores características de seguridad, considera usar herramientas como Flask, Django o FastAPI.
Algunas de las clases más representativas en import http.server
El módulo http.server ofrece diversas clases que puedes usar según tus necesidades. Entre las más importantes encontramos:
- HTTPServer: Esta clase es el núcleo del módulo. Se encarga de crear un servidor HTTP básico que escucha en un puerto específico. Puedes personalizar su comportamiento utilizando un RequestHandler:
Veamos un ejemplo:
from http.server import HTTPServer, BaseHTTPRequestHandler
class MiHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(b"Hola, mundo desde HTTPServer!")
server = HTTPServer(("localhost", 8000), MiHandler)
print("Servidor corriendo en http://localhost:8000")
server.serve_forever()
- SimpleHTTPRequestHandler: Es una clase derivada de BaseHTTPRequestHandler que sirve archivos estáticos del directorio actual o del que especifiques. Es perfecta para pruebas rápidas sin necesidad de configuraciones complicadas:
Puedes usarlo del siguiente modo:
import http.server
PORT = 8080
handler = http.server.SimpleHTTPRequestHandler
with http.server.HTTPServer(("", PORT), handler) as httpd:
print(f"Servidor estático corriendo en el puerto {PORT}")
httpd.serve_forever()
- ThreadingHTTPServer: Esta clase es similar a HTTPServer, pero utiliza subprocesos para manejar múltiples solicitudes simultáneamente. Es útil para pruebas donde varias conexiones son necesarias:
Un ejemplo de su implementación podría ser:
from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler
server = ThreadingHTTPServer(("localhost", 8000), SimpleHTTPRequestHandler)
print("Servidor con subprocesos corriendo en http://localhost:8000")
server.serve_forever()
¿Qué ventajas y desventajas podemos encontrar en import http.server?
El módulo de import http.server es muy útil en algunas situaciones, pero hay otras en las que no tanto. Analicemos un poco los pros y los contras:
Ventajas | Limitaciones |
---|---|
Fácil de usar, ideal para pruebas locales o prototipos rápidos. | No apto para entornos de producción debido a su falta de seguridad avanzada. |
Integrado en Python, no necesitas instalar librerías adicionales. | Ofrece capacidades básicas y carece de funcionalidades modernas como gestión de sesiones. |
Personalizable mediante clases propias, adaptándose a necesidades específicas. | No es escalable, adecuado solo para pruebas o proyectos pequeños. |
Si te interesó esta herramienta y quieres seguir descubriendo todo lo que Python tiene para ofrecerte, no dudes en unirte a nuestro bootcamp de programación desde cero, en donde accederás a la mejor formación y podrás ser partícipe de la bolsa de empleo que Keepcoding tiene exclusivamente para sus alumnos. Podra´s acceder a excelentes ofertas laborales en poco tiempo y seguir trabajando por cumplir tus sueños. No lo dudes más y aprende con KeepCoding.