| 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