13

Y a-t-il un moyen de faire en sorte que BaseHTTPServer.HTTPServer soit multithread comme SocketServer.ThreadingTCPServer?Python - BaseHTTPServer.HTTPServer Concomitance et threading

+0

Y a-t-il une raison pour laquelle vous en avez besoin? – jakebman

+3

Parce que je veux un serveur Web de base qui peut gérer la concurrence? Je n'ai pas non plus besoin d'un framework complet comme web.py, cherrypy ou quelque chose comme ça, je veux juste un serveur web vraiment basique comme BaseHTTPServer qui peut gérer plusieurs requêtes simultanées. – Ian

+1

voici une référence: [link] (http://www.doughellmann.com/PyMOTW/BaseHTTPServer/index.html#module-BaseHTTPServer), threading, forking – sfossen

Répondre

19

Vous pouvez simplement utiliser le mixin de filetage en utilisant ces deux classes qui multithread :)

Il ne vous aidera pas beaucoup dans la performance bien, mais il est atleast multithread.

from SocketServer import ThreadingMixIn 
from BaseHTTPServer import HTTPServer 

class MultiThreadedHTTPServer(ThreadingMixIn, HTTPServer): 
    pass 
+2

Cela ressemble à * une * solution .. mais je préfère choisir d'écrire mon propre serveur que d'utiliser quelque chose de lent .. :( – Ian

+0

Si vous cherchez simplement à héberger Python que pourquoi ne pas utiliser un serveur http existant comme nginx, Apache ou lighttpd? En ce qui concerne les performances, le threading vous permettra de faire plusieurs connexions simultanées sans bloquer, donc dans le cas de plusieurs requêtes simultanées, il sera plus rapide, mais il n'utilisera toujours qu'un seul processeur – Wolph

+1

Je ne suis pas à la recherche de cela, je fais un serveur de file d'attente qui prend des demandes entrantes (http ou un format similaire) et fait une action basée sur la demande – Ian