Tornado: Servidor web asíncrono para Python de alto rendimiento

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

Tornado: Guía completa del framework web asíncrono de Python

¿Qué es Tornado?

Tornado es un potente servidor web y framework asíncrono para Python, diseñado específicamente para manejar una gran cantidad de conexiones simultáneas. Creado por el equipo de FriendFeed (posteriormente adquirido por Facebook), Tornado se convirtió en uno de los pioneros en la programación asíncrona con Python.

La filosofía principal de Tornado se basa en el uso de entrada/salida no bloqueante y una arquitectura orientada a eventos. Esto permite que un solo proceso atienda miles de conexiones al mismo tiempo, convirtiéndolo en la opción ideal para crear aplicaciones web de alto tráfico, chats, sistemas en tiempo real y servicios API.

Características clave y ventajas de Tornado

Arquitectura asíncrona

Tornado utiliza un modelo de programación orientado a eventos que permite procesar múltiples solicitudes en un solo hilo. Esto reduce significativamente la sobrecarga por cambio de contexto y gestión de memoria.

Servidor HTTP integrado

A diferencia de otros frameworks, Tornado incluye su propio servidor HTTP, eliminando la necesidad de componentes adicionales como WSGI para desplegar aplicaciones.

Soporte nativo para WebSocket

Tornado ofrece soporte nativo para conexiones WebSocket, lo que lo convierte en una excelente opción para crear aplicaciones interactivas en tiempo real.

Compatibilidad con asyncio

A partir de la versión 5.0, Tornado es totalmente compatible con asyncio, permitiendo usarlo junto con otras bibliotecas asíncronas de Python.

Sistema de enrutamiento flexible

Tornado proporciona un potente sistema de enrutamiento de URLs con soporte para expresiones regulares y parámetros.

Motor de plantillas integrado

El framework incluye su propio motor de plantillas para generar páginas HTML con contenido dinámico.

Instalación y configuración del entorno

Instalación de Tornado

pip install tornado

Para trabajar con funcionalidades adicionales, puedes instalar paquetes complementarios:

# Para trabajar con MongoDB
pip install motor

# Para trabajar con PostgreSQL
pip install asyncpg

# Para trabajar con Redis
pip install aioredis

Estructura del proyecto

Estructura recomendada para un proyecto Tornado:

project/
├── app.py                 # Archivo principal de la aplicación
├── handlers/              # Manejadores de solicitudes
│   ├── __init__.py
│   ├── base.py
│   ├── auth.py
│   └── api.py
├── models/                # Modelos de datos
│   ├── __init__.py
│   └── user.py
├── templates/             # Plantillas HTML
│   ├── base.html
│   ├── index.html
│   └── error.html
├── static/                # Archivos estáticos
│   ├── css/
│   ├── js/
│   └── images/
├── config/                # Archivos de configuración
│   ├── __init__.py
│   └── settings.py
└── requirements.txt       # Dependencias del proyecto

Creación de la primera aplicación

Ejemplo básico

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("¡Bienvenido a Tornado!")

class AboutHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Página de nosotros")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
        (r"/about", AboutHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    print("Servidor iniciado en http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

Configuración de la aplicación con parámetros

import tornado.web
import tornado.ioloop
import os

class Application(tornado.web.Application):
    def __init__(self):
        handlers                    

Recommendations