2009-12-03 4 views
0

J'écris une application web en utilisant python avec web.py, et je veux implémenter mon propre système de journalisation. Je voudrais enregistrer des informations détaillées sur chaque requête qui vient à python (les fichiers statiques sont gérés par les serveurs web). Actuellement, je pense à l'écriture des journaux dans un tuyau. De l'autre côté, il devrait y avoir cronolog.Python web app se connectant à travers le tuyau? (performance concernée)

Ma principale préoccupation est que la performance sera-t-elle bonne? Comment le temps et les ressources sont-ils utilisés pour canaliser les journaux par rapport au traitement normal d'une requête (moins de 5 requêtes de base de données et génération de page à partir de modèles)?

Ou y a-t-il d'autres meilleures approches? Je ne veux pas écrire le fichier journal en python car des dizaines de processus seront démarrés par fastcgi.

+1

Avez-vous l'intention d'écrire un type de 'PipeHandler' similaire aux Handlers décrits dans http://docs.python.org/library/logging.html#useful-handlers? –

+0

Je viens de décider qu'il n'y aura qu'un seul processus engendré par fastcgi. Et flup va ajouter des fonctionnalités de multithreading à web.py La journalisation python est déjà thread thread et la situation est plus simple :) Merci. – qingbo

Répondre

1

Les tubes sont l'un des mécanismes d'E/S les plus rapides disponibles. C'est juste un tampon partagé. Rien de plus. Si l'extrémité de réception de votre pipe est totalement dépassée, vous pouvez avoir un problème. Mais vous n'avez aucune preuve de cela en ce moment.

Si vous avez lancé 10 processus démarrés par FastCGI, chacun peut avoir son propre fichier journal indépendant. C'est la situation idéale: utilisez la journalisation Python - faites en sorte que chaque processus ait un fichier journal unique.

Dans le cas rare où vous devez examiner tous les fichiers journaux, rassemblez-les ensemble pour analyse.

Questions connexes