2011-02-24 2 views
1

Le code suivant fonctionne correctement avec python.exe mais échoue avec pythonw.exe. J'utilise Python 3.1 sur Windows 7.BaseHTTPRequestHandler se bloque lors de son exécution par pythonw.exe 3.1

from http.server import BaseHTTPRequestHandler, HTTPServer 

class FooHandler(BaseHTTPRequestHandler): 
    def do_POST(self): 
     length = int(self.headers['Content-Length']) 
     data = self.rfile.read(length) 
     print(data) 
     self.send_response(200) 
     self.send_header('Content-Length', '0') 
     self.end_headers() 

httpd = HTTPServer(('localhost', 8000), FooHandler) 
httpd.serve_forever() 

Quelque chose ne va pas quand je commence à envoyer des réponses. Rien n'a été réécrit. Et si j'essaye une autre connexion http, elle ne se connectera pas. J'ai aussi essayé d'utiliser self.wfile mais pas de chance non plus.

Répondre

1

Vous imprimez sur stdout. pythonw.exe n'a pas de stdout, car il n'est pas connecté à un terminal. Je suppose que cela a quelque chose à voir avec ça. Essayez de rediriger stdout vers un fichier, ou plus rapidement, supprimez print().

+0

merci. J'ai redirigé sys.stdout et sys.stderr pour ouvrir (os.devnull, 'w') et ça marche bien. – llc

Questions connexes