CherryPy est un framework d'applications web orienté objet utilisant le langage de programmation Python . Il est conçu pour le développement rapide d' applications web en encapsulant le protocole HTTP , mais reste à bas niveau et n'offre guère plus que ce qui est défini dans .
CherryPy peut être exécuté comme serveur web ou via n'importe quel environnement compatible WSGI . Il ne gère pas les tâches telles que la génération de modèles pour le rendu ou l'accès au serveur. Le framework est extensible grâce à des filtres, appelés à des points précis du traitement des requêtes et des réponses.
Interface Pythonique
L'un des objectifs du fondateur du projet, « pythonique » que possible. Cela permet au développeur d'utiliser le framework comme n'importe quel module Python classique et d'oublier (d'un point de vue technique) que l'application est destinée au web.
Par exemple, le programme Hello World classique avec CherryPy 3 ressemblerait à ceci :
Ou, comme le montre actuellement l'exemple sur leur site web, en utilisant des décorateurs Python pour exposer automatiquement la route index :
Caractéristiques
CherryPy implémente :
- Un serveur web compatible HTTP/1.1 , utilisant WSGI et un pool de threads . En général, CherryPy ne prend que 1 à 2 ms par page.
- Prise en charge de tout autre serveur Web ou adaptateur compatible WSGI , y compris Apache , IIS , lighttpd , mod_python , FastCGI , SCGI et mod_wsgi .
- Un adaptateur natif pour mod_python .
- Plusieurs serveurs HTTP (par exemple, possibilité d'écouter sur plusieurs ports).
- Un système de plugins Les plugins CherryPy s'intègrent aux événements du processus serveur — démarrage du serveur, arrêt du serveur, sortie du serveur, etc. — pour exécuter le code qui doit être exécuté lorsque le serveur démarre ou s'arrête.
- CherryPy intègre des outils pour la mise en cache , l'encodage , les sessions , l'autorisation , le contenu statique, etc. Ces outils interagissent avec les événements du processus de requête . Lorsqu'un serveur CherryPy reçoit une requête, il suit une procédure spécifique pour la traiter. Les gestionnaires de pages ne représentent qu'une étape de ce processus. CherryPy propose également une syntaxe et une API de configuration permettant de les activer ou de les désactiver pour certains gestionnaires.
- Un système de configuration pour les développeurs et les déployeurs. Les déploiements CherryPy sont configurables au niveau du site, de l'application et du contrôleur, via des dictionnaires Python, des fichiers de configuration et des objets de fichiers ouverts.
- Une suite de tests complète pour les fonctionnalités de base et le framework associé qui peut être utilisée pour tester les applications CherryPy.
- Profilage intégré depuis la v2.1, couverture et prise en charge des tests.
CherryPy ne vous oblige pas à utiliser un ORM ( Object-Relational Mapper ), un langage de modèles ou une bibliothèque JavaScript spécifique .
Peut être utilisé avec CherryPy
- Routes — une réimplémentation en Python du système de routes de Ruby on Rails pour associer des URL à des contrôleurs/actions et générer des URL.
mappeurs objet-relationnel
- SQLAlchemy est un système de gestion de bases de données et un ORM pour les applications Python. TurboGears 2.x utilise CherryPy comme serveur et SQLAlchemy comme ORM par défaut.
- SQLObject est un ORM populaire permettant de fournir une interface objet à une base de données. Il prend en charge plusieurs systèmes de gestion de bases de données courants : MySQL , PostgreSQL , SQLite , Sybase SQL Server , MaxDB , Microsoft SQL Server et Firebird sont inclus dans la distribution . TurboGears 1.x utilise CherryPy comme serveur et SQLObject comme ORM.
- Storm — le système de gestion d'objets (ORM) de Canonical Ltd. (créateurs d' Ubuntu )
- logiciel du domaine public , ORM thread-safe pour applications Python
- MongoDB .
Langages de modèles
- Mako — une bibliothèque de modèles écrite en Python, utilisable avec un outil CherryPy simple.
- Cheetah — un moteur de modèles et un outil de génération de code open source , écrit en Python.
- Genshi — un puissant langage de modèles XML.
- Jinja est un langage de modèles à usage général. CherryPy dispose d'un outil pour utiliser les modèles Jinja.
- Kid est un langage de modèles simple pour les vocabulaires basés sur XML, écrit en Python. TurboGears 1.x utilise CherryPy comme serveur et Kid comme interface.
Le wiki de CherryPy aide à choisir un langage de modèles.
Produits utilisant CherryPy
- TurboGears — CherryPy 2.x est un composant principal de TurboGears 1.x.
- Splunk Enterprise - CherryPy 3.1.2