2010-11-25 5 views
-1

J'ai écrit une application Web compatible WSGI en utilisant web.py qui charge quelques douzaines de données MB en mémoire au démarrage.Application Web Python: Comment conserver l'état

Cela fonctionne plutôt bien avec le serveur intégré web.py. Cependant, en utilisant Apache 2 + mod_wsgi, chaque requête recharge les données, relançant essentiellement le programme. En raison du temps de chargement de plusieurs secondes, c'est insupportable.

Est-il inhérent à mod_wsgi ou peut-il être configuré? Quelles sont mes alternatives?

+0

Est-ce inhérent à mod_wsgi? Non. C'est inhérent au HTTP. Vous aurez besoin de poster le plus petit morceau de code qui montre comment vous pensez que "démarrage" fonctionne. En outre, vous devrez fournir votre configuration mod_wsgi, en particulier, indiquant si vous utilisez ou non le mode "démon". –

+0

@ S.Lott Merci d'avoir mis en place le mode démon - avoir un processus persistant à travers les demandes conserve les données côté serveur en mémoire. Faites-en une réponse, et je vais accepter. –

+0

Oui, probablement que vous utilisiez le mode intégré et pire encore prefork MPM, cela signifie que les demandes pourraient aller à beaucoup de processus et d'applications ayant besoin d'être beaucoup chargées dans un nouveau processus. Voir 'http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html' pour les discussions sur les problèmes avec prefork et le mode intégré, vous ne configurez pas les choses correctement. –

Répondre

1

"Est-ce inhérent à mod_wsgi?" Non. Il est inhérent à HTTP

Puisque vous n'avez pas publié votre configuration mod_wsgi, il est impossible de dire ce que vous avez mal fait.

Je peux seulement deviner que vous n'avez pas utilisé le mode démon.

Voir http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Defining_Process_Groups pour plus d'informations sur le mode démon.

Cela peut ne pas être la meilleure solution. Il vaudrait peut-être mieux (de loin, beaucoup mieux) utiliser une bonne base de données. Sans exemples de code réels, et plus de détails, tout cela est juste une supposition aléatoire.

Questions connexes