Guía para Principiantes: Levantando un Servidor Web Local en Python

Guía para Principiantes: Levantando un Servidor Web Local en Python
Photo by Brecht Corbeel / Unsplash

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 8000

Visita 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 uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"status": "ok"}
uvicorn main:app --reload

Regla general: http.server para "solo necesito servir o debuggear algo ahora mismo", un framework real para todo lo que vayas a mantener corriendo.

Read more