在pythonw.exe 3.1下运行时BaseHTTPRequestHandler挂起
下面的代码在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()
这一行。