Authors: | Gael Pasgrimaud |
---|---|
Date: | $Date: 2008-05-18$ |
Norme visant à décrire le processus de publication d'une application web.
Se découpe en 3 parties:
Non détaillé ici. Il est chargé de desservir les pages web. Il en existe un grand nombre:
C'est le corps du processus. Il contient toute la logique applicative. Un grand nombre de framework supporte le WSGI:
Implémentation simple:
def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return '<html><body>Hello</body></html>'
Interagis à la fois avec l'application et avec le serveur.
Notification des erreurs de l'application:
class ErrorHandler(object): def __init__(self, app): self.application = app def __call__(environ, start_response): try: return self.application(environ, start_response) except Exception, e: # notification de l'admin ... raise
Ensemble de librairie implementant la norme
Factory avec configuration:
def mon_application(global_config, **local_config): # on utilise le factory #pour configurer la notification app = ErrorHandler(application, local_config['email']) return app
deploy.ini:
[app:main] use = egg:mon.package#mon_application email = gawel@afpy.org [server:main] use = egg:Paste#http host = 127.0.0.1 port = 5000
Lancement de l'application:
paster serve deploy.ini
app: une application:
[app:mon_application] use = egg:mon.package#ma_super_application
filter: monde du milieu:
[filter:error_handler] use = egg:mon.package#error_handler
pipeline: permet un enchaînement monde du milieu / application:
[pipeline:main] pipeline = error_handler mon_application
composite: permet de combiner des applications:
[composite:main] use = Paste#urlmap /app1 = mon_application /app2 = mon_application2
server: permet un choix de serveur:
[server:main] use = PasteScript#cherrypy host = 127.0.0.1 port = 5000
Paste utilise les section :main comme point d'entrée puis construit l'application