Uvicorn: servidor ASGI para FastAPI y Django - Guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Uvicorn: Guía completa del servidor ASGI de alto rendimiento

¿Qué es Uvicorn?

Uvicorn es un servidor ASGI moderno, ligero y de alto rendimiento, escrito en Python. Está diseñado específicamente para ejecutar aplicaciones web asíncronas y es uno de los servidores más rápidos para aplicaciones Python. Uvicorn está construido sobre las bibliotecas uvloop y httptools, lo que garantiza un rendimiento excepcional al manejar una gran cantidad de solicitudes simultáneas.

El servidor admite protocolos y tecnologías web modernas, incluyendo HTTP/1.1, WebSocket, y puede funcionar con cualquier framework compatible con ASGI, como FastAPI, Starlette, Django Channels y otros.

Principales ventajas y características

Ventajas arquitectónicas

Uvicorn representa un gran avance en el ámbito de los servidores web Python gracias a las siguientes características:

Asincronía a nivel de núcleo — utiliza una arquitectura orientada a eventos que permite manejar miles de conexiones simultáneas con un consumo mínimo de recursos.

Alto rendimiento — gracias a la integración con uvloop (implementación rápida de asyncio) y httptools (analizador HTTP rápido), Uvicorn ofrece un rendimiento comparable al de servidores en Go y Node.js.

Soporte de protocolos modernos — soporte nativo para WebSocket, HTTP/1.1, y posibilidad de trabajar con HTTP/2 a través de proxies adicionales.

Requisitos mínimos del sistema — optimizado para funcionar tanto en máquinas locales de desarrollo como en servidores de producción.

Características técnicas

Uvicorn implementa la especificación ASGI 3.0, lo que lo hace compatible con una amplia gama de frameworks Python modernos. El servidor admite la detección automática de cambios en el código durante el desarrollo, modo multiproceso para producción y un sistema de configuración flexible.

Comparación entre ASGI y WSGI

Entender las diferencias entre ASGI y WSGI es fundamental para elegir el servidor adecuado:

Característica WSGI (Web Server Gateway Interface) ASGI (Asynchronous Server Gateway Interface)
Modelo de ejecución Síncrono, bloqueante Asíncrono, no bloqueante
Soporte async/await No Soporte completo
WebSocket No compatible Soporte nativo
HTTP/2 Soporte limitado Soporte completo
Tareas en segundo plano Requieren procesos separados Soporte integrado
Rendimiento Limitado por número de hilos Alto gracias al bucle de eventos
Ejemplos de servidores Gunicorn, uWSGI, mod_wsgi Uvicorn, Hypercorn, Daphne
Frameworks Flask, Django (antes de 3.0), Bottle FastAPI, Starlette, Django 3.0+, Quart

ASGI es la evolución de WSGI, diseñado para aplicaciones web modernas que requieren alto rendimiento y soporte de funciones en tiempo real.

Instalación y configuración inicial

Instalación con pip

pip install uvicorn

Instalación con dependencias adicionales

# Para máximo rendimiento
pip install uvicorn[standard]

# Incluye uvloop, httptools, websockets, watchgod, python-dotenv

Ejemplo mínimo de aplicación

Crea un archivo main.py:

fro                    

Recommendations