2011-08-31 5 views
0

d'un serveur web simple python:Python rapide Webserver

try: 
    server = HTTPServer(('', 80), MyHandler) 
    print 'started httpserver...' 
    server.serve_forever() 
except KeyboardInterrupt: 
    print '^C received, shutting down server' 
    server.socket.close() 

Est-il possible que je peux le faire plus vite? Je crois que ce qui précède est bloquant si préoccupé par réponses lentes ...

Merci!

+0

Oui. Il existe un moyen de le rendre plus rapide et non bloquant. Peut-être devriez-vous modifier légèrement votre question pour souligner ce que vous essayez d'accomplir et pourquoi vous avez commencé avec cela comme premier effort. –

+1

Pour les douilles non-bloquantes, jetez un coup d'œil aux tordues ou tornades. C'est le serveur web le plus rapide sur python que je connaisse. Mais ils peuvent être assez compliqués. Vous pouvez également utiliser ForkingMixin ou ThreadingMixin pour le serveur HTTP pour empêcher le blocage entre les demandes. – varela

+0

Merci beaucoup à vous deux. Je cours une étude d'utilisateur simple pour laquelle j'ai conçu un plugin de navigateur. J'ai un composant serveur avec lequel le plugin communique périodiquement. Je remarque que les temps de réponse chez le client (le plugin) sont parfois lents. Je veux accélérer le serveur web - voulait savoir comment sans le rendre trop compliqué. –

Répondre

1

Pour faciliter l'utilisation du serveur Web, utilisez des sockets d'E/S non bloquantes. Un bon cadre/serveur pour Python est Frai:

http://pypi.python.org/pypi/Spawning/

Notez que cela rend votre service évolutif que horizontalement (vous pouvez facilement ajouter des demandes plus simultanées). Le délai de traitement d'une seule requête dépend de votre code (comment vous faites les connexions à la base de données, etc.) et du matériel (n'utilisez pas l'hébergement mutualisé). Vous n'avez pas expliqué en détail dans votre question ce que vous traitez, donc il n'y a pas assez de données pour donner une réponse complète à votre question.