在pythonw.exe 3.1下运行时BaseHTTPRequestHandler挂起

1 投票
1 回答
1006 浏览
提问于 2025-04-16 12:27

下面的代码在python.exe下运行得很好,但在pythonw.exe下就不行。我在Windows 7上使用的是Python 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 个回答

1

你正在向标准输出(stdout)打印信息。pythonw.exe没有标准输出,因为它没有连接到终端。我猜这可能和这个有关。

你可以试着把标准输出重定向到一个文件,或者更简单的方法,就是直接去掉print()这一行。

撰写回答