Guía para Principiantes: Levantando un Servidor Web Local en Python
A veces no necesitas un framework — solo necesitas servir una carpeta de archivos, o probar algo rápido, sin salir de la terminal. Aquí van tres niveles de "servidor web local en Python", desde cero configuración hasta un servidor mínimo real.
Nivel 1 — Sirve archivos estáticos al instante
Python viene con un servidor HTTP integrado. Desde cualquier carpeta:
python3 -m http.server 8000Visita http://localhost:8000 y verás un listado del directorio desde donde lo corriste. Sin instalaciones, sin configuración — útil para previsualizar rápido un build estático, compartir un archivo con otro dispositivo en tu red, o probar un asset descargable antes de publicarlo.
Nivel 2 — Un handler personalizado mínimo
Si necesitas lógica real (no solo servir archivos), http.server también te da una clase base para construir sobre ella:
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write(b"Hello from a plain Python server\n")
HTTPServer(("0.0.0.0", 8000), Handler).serve_forever()Este es un servidor HTTP real sin dependencias — útil para entender qué está haciendo realmente un framework por debajo, o para un endpoint de health-check pequeño para el que no quieres traer una dependencia.
Nivel 3 — Cuándo pasar a un framework
http.server es de un solo hilo y no está pensado para tráfico de producción ni nada con routing real, manejo de JSON o concurrencia. En el momento en que necesites más de una o dos rutas, pasa a Flask para algo simple y síncrono, o FastAPI si quieres soporte async y validación automática de requests.
pip install fastapi uvicornfrom fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"status": "ok"}uvicorn main:app --reloadRegla general: http.server para "solo necesito servir o debuggear algo ahora mismo", un framework real para todo lo que vayas a mantener corriendo.