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 Aussi dans la bibliothèque
Client OAuth pour Go (Golang) : guide complet de la bibliothèque
Intégration des métriques Prometheus dans les applications Kotlin : guide complet
Travailler avec XML en Kotlin : bibliothèques et outils pour l'analyse et la création
Travailler avec XML en C# (.NET) : Guide complet