2011-02-24 78 views
1

以下代码可与python.exe协同工作,但pythonw.exe失败。我在Windows 7上使用Python 3.1。BaseHTTPRequestHandler在由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() 

当我开始发送响应时出错。没有人写回来。如果我尝试另一个http连接,它将不会连接。我也尝试使用self.wfile,但没有运气。

回答

1

您正在打印到标准输出。 pythonw.exe doens't没有标准输出,因为它没有连接到终端。我的猜测是这与它有关。

尝试将stdout重定向到文件,或更快,删除print()

+0

谢谢。我重定向了sys.stdout和sys.stderr以打开(os.devnull,'w')并且它运行平稳。 – llc 2011-02-25 13:30:44