2010-05-11 10 views
0

Dans notre application Web basée sur Pylons, nous créons une classe qui fournit essentiellement des fonctionnalités de journalisation. Nous avons besoin d'une nouvelle instance de cette classe pour chaque requête http qui vient, mais un seul par requête.Comment créer singleton par demande dans les pylônes?

Quelle est la bonne façon de faire à ce sujet? Devrions-nous simplement créer l'objet dans le middleware et stocker dans request.environ? Y a-t-il un moyen plus approprié de s'y prendre?

Répondre

1

Il existe une bonne implémentation des variables locales de demande dans Paste: paste.registry Pylons l'utilise pour ses propres variables globales locales de type request.

Il suffit de créer l'objet dans "middleware" comme documenté et importer la variable globale dans les modules où vous en avez besoin. (middleware dans scarequotes parce que ce n'est pas strictement middleware, parce que vous dépendez de cela pour faire partie de votre application/cadre)

0

Peut-être compter sur la fonctionnalité intégrée?

import logging 
logging.getLogger(__name__) 

La fonctionnalité de journalisation est plutôt personnalisable en Python.

+0

Oui, nous l'utilisons actuellement. Nous ne réécrivons pas la fonctionnalité de journalisation elle-même, nous sommes en train d'écrire une classe qui détermine exactement les informations à journaliser. –

+0

@dave mankoff: et les filtres, les gestionnaires et les formateurs ne correspondent pas à vos besoins, n'est-ce pas? – newtover

+0

non. Il ne s'agit pas de filtrer les informations disponibles, mais de capturer les informations spécifiques à notre application et de les mettre à la disposition de l'enregistreur. –