• Aucun résultat trouvé

Développement d'une plateforme web avec CherryPy

N/A
N/A
Protected

Academic year: 2021

Partager "Développement d'une plateforme web avec CherryPy"

Copied!
9
0
0

Texte intégral

(1)

Développement d’une

plateforme web avec CherryPy

Marie-Josée Cros

INRA Toulouse

[email protected]

(2)

Introduction

Volonté de développer une plateforme web pour proposer un environnement intégré dans lequel un biologiste pourrait lancer plusieurs programmes, explorer, éditer et exporter les résultats obtenus :

pas d’installation de logiciels à faire

puissance de la combinaison d’outils disparates

Plusieurs équipes partantes (compétences, localisations différentes), volonté d’ouverture

Après discussion et spécification de ce que l’on pourrait réaliser, il y a 1 an, des choix techniques ont été fait :

Python pour le langage de développement

CherryPy complété par Cheetah (template engine) pour le web

(3)

Pourquoi ces choix

Qualités du langage : simplicité syntaxe, interprété …

Beaucoup de bibliothèques disponibles

Impression langage de plus en plus utilisé : intérêt pour le connaître

Permettait de développer les parties web et applications dans le même langage

Simplicité, proximité avec Python

Intégration d’un serveur HTTP

Possibilité d’ajout d’un langage de rendu

Syntaxe simple, proche de Python

Possibilité de compiler les templates

Très utilisé, communauté active

(4)

CherryPy (cherrypy.org)

Framework HTTP, orienté objet, pythonic

Compatible WSGI

Peut fonctionner avec différents langages de rendu

Créé en 2002, en 2005 intégré à TurboGears, fin 2006 version 3.0, actuellement version 3.1.2

Le serveur HTTP fournit permet aux applications d'être déployées n'importe où Python est installé

Permet d’écrire des applications web de la même manière qu’une application Python classique : fait correspondre une URL et sa requête en un appel de méthode

http://host.net/echo?message="hello" -> echo(message= "hello")

Un ensemble de modules pour authentification, encoding, session

(5)

hello.py

import cherrypy class HelloWorld:

def index(self):

return ‘Hello world !’

index.exposed = True

cherrypy.quickstart(HelloWorld()) python2.5 hello.py

CherryPy - exemple

Lancement du serveur web intégré

avec mapping de ‘/’ sur HelloWorld.index() Pour que la méthode soit

appelable, il faut la publier

Configuration possible du serveur par fichier server.socket_port = 8080

(6)

 Permet de séparer le contenu de la présentation

 Exemple <html>

<head><title>$title</title></head>

<body>

<table>

#for $client in $clients <tr>

<td>$client.surname, $client.firstname</td>

<td><a href="mailto:$client.email">$client.email</a></td>

</tr>

#end for </table>

</body>

</html>

Cheetah

(7)

rnaspace.org – workflow utilisateur

B I O

L O G I S T E

P L A T E F O R M E D E C A L C U L

(8)

Conclusion

Python : gens motivés pour se mettre au langage, se prête bien à du travail collaboratif, difficulté à trouver des méthodes quand on ne sait pas dans quelle bibliothèque les chercher)

CherryPy : pour le moment on apprécie les caractéristiques pour lesquelles on l'a choisi

Des problèmes récents de gestion de mémoire vive résolus

Interrogation sur CherryPy en mode production (charge, sécurité …)

Interrogation sur la structure du logiciel, on a défini une

architecture 3-tiers en utilisant le modèle MVC pour la partie

interface (sourceforge.net/projects/rnaspace) mais un framework plus complet nous aurait peut-être aidé à la définir

(9)

Partenaires

Références

Documents relatifs