Tornado – serveur web asynchrone

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Tornado : Guide complet du framework web asynchrone Python

Qu'est-ce que Tornado ?

Tornado est un serveur web et framework web asynchrone puissant pour Python, spécialement conçu pour gérer un grand nombre de connexions simultanées. Créé par l'équipe de FriendFeed (plus tard rachetée par Facebook), Tornado est l'un des pionniers de la programmation asynchrone en Python.

La philosophie principale de Tornado repose sur l'utilisation d'entrées/sorties non bloquantes et d'une architecture orientée événements. Cela permet à un seul processus de gérer des milliers de connexions en même temps, ce qui en fait un choix idéal pour créer des applications web à forte charge, des chats, des systèmes temps réel et des services API.

Fonctionnalités clés et avantages de Tornado

Architecture asynchrone

Tornado utilise un modèle de programmation orienté événements qui permet de traiter de nombreuses requêtes dans un seul thread. Cela réduit considérablement les frais généraux liés au changement de contexte et à la gestion de la mémoire.

Serveur HTTP intégré

Contrairement à de nombreux autres frameworks, Tornado inclut son propre serveur HTTP, éliminant ainsi le besoin de composants supplémentaires comme WSGI pour déployer des applications.

Support WebSocket

Tornado offre un support natif des connexions WebSocket, ce qui en fait un excellent choix pour créer des applications interactives en temps réel.

Compatibilité avec asyncio

Depuis la version 5.0, Tornado est entièrement compatible avec asyncio, ce qui permet de l'utiliser avec d'autres bibliothèques asynchrones Python.

Système de routage flexible

Tornado fournit un système de routage d'URL puissant avec prise en charge des expressions régulières et des paramètres.

Moteur de templates intégré

Le framework inclut son propre moteur de templates pour générer des pages HTML avec du contenu dynamique.

Installation et configuration de l'environnement

Installation de Tornado

pip install tornado

Pour utiliser des fonctionnalités supplémentaires, vous pouvez installer des paquets complémentaires :

# Pour travailler avec MongoDB
pip install motor

# Pour travailler avec PostgreSQL
pip install asyncpg

# Pour travailler avec Redis
pip install aioredis

Structure du projet

Structure de projet recommandée pour Tornado :

project/
├── app.py                 # Fichier principal de l'application
├── handlers/              # Gestionnaires de requêtes
│   ├── __init__.py
│   ├── base.py
│   ├── auth.py
│   └── api.py
├── models/                # Modèles de données
│   ├── __init__.py
│   └── user.py
├── templates/             # Templates HTML
│   ├── base.html
│   ├── index.html
│   └── error.html
├── static/                # Fichiers statiques
│   ├── css/
│   ├── js/
│   └── images/
├── config/                # Fichiers de configuration
│   ├── __init__.py
│   └── settings.py
└── requirements.txt       # Dépendances du projet

Création de votre première application

Exemple de base

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Bienvenue sur Tornado !")

class AboutHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Page À propos")

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

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    print("Serveur démarré sur http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

Configuration de l'application avec paramètres

import tornado.web
import tornado.ioloop
import os

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

Recommendations