2011-02-24 6 views
1

다음 코드는 python.exe에서 제대로 작동하지만 pythonw.exe에서는 실패합니다. Windows 7에서 Python 3.1을 사용하고 있습니다.pythonw.exe로 실행하면 BaseHTTPRequestHandler가 중단됨 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는 터미널에 연결되어 있지 않으므로 stdout을 가지고 있지 않습니다. 내 짐작으로는 이것과 관련이 있다는 것입니다.

stdout을 파일로 리디렉션하려고 시도하거나 더 빨리 print()을 제거하십시오.

+0

감사합니다. sys.stdout과 sys.stderr을 (os.devnull, 'w') 열려면 리다이렉트했다. – llc

관련 문제