매우 간단한 BaseHttpServer (아래 코드)를 사용하면 다음과 같은 문제가 발생합니다.파이썬 SimpleHttpServer 배경 버그?
./testserver.py &
을 사용하여 백그라운드에서 서버를 시작하면 서버가 12121 포트로 응답하고 응답합니다. disown
을 입력하면 서버가 계속 응답합니다. 재구성 test.log
단계 입력/출력 오류에 다음 요청 후 서버가 중지 단말을 닫은 후 :
$ ./testserver &
$ bg
$ disown
가까운 단말 서버에 요청을 전송 -> 서버는 응답하지 않는다.
는내가 찾은 유일한 해결책은 리디렉션했다 stdout
및 stderr
: $ ./testserver>을/dev/null 2> 또는 @Daniel는 nohup
가 가지고와 그것을 일반적인 방법으로 전화를 언급 한 바와 같이 누구나 전에이 버그를 경험했거나 출력이 없으면 HttpServer가 작동하지 않는 이유는 무엇입니까?
에만 파일이 아닌 예외 문자열을 쓸 수
#! /usr/bin/env python
import time
import BaseHTTPServer
HOST_NAME = '0.0.0.0'
PORT_NUMBER = 12121
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_HEAD(s):
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
def do_GET(s):
"""Respond to a GET request."""
s.send_response(200)
s.send_header("Content-type", "text/html")
s.end_headers()
s.wfile.write("MANUAL SERVER SUCCESS")
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
try:
httpd.serve_forever()
except Exception as e:
with open('test.log', 'w') as f:
f.write(str(e))
당신은 두 점에 대해 옳았습니다. 그에 따라 코드를 변경했습니다 ('write'는'__str__' 메서드를 사용하지 않습니다.) 그렇다면 실제로'Input/outpu error'가 발생합니다. 가능한 출력이 없으면 HttpServer가 충돌하는 것이 바람직한 동작입니다. – ProfHase85