SimpleHTTPRequestHandler 클래스에 매개 변수를 전달해야하므로 클래스 팩토리를 사용하여 아래와 같이 사용자 지정 처리기를 만들었습니다.SimpleHTPRequestHandler에 매개 변수 전달
def RequestHandlerClass(application_path):
class CustomHandler(SimpleHTTPRequestHandler):
def __init__(self, request, client_address, server):
SimpleHTTPRequestHandler.__init__(self, request, client_address, server)
self._file_1_done = False
self._file_2_done = False
self._application_path = application_path
def _reset_flags(self):
self._file_1_done = False
self._file_2_done = False
def do_GET(self):
if (self.path == '/file1.qml'):
self._file_1_done = True
if (self.path == '/file2.qml'):
self._file_2_done = True
filepath = self._application_path + '/' + self.path # Error here
try:
f = open(filepath)
self.send_response(200)
self.end_headers()
self.wfile.write(f.read())
f.close()
except IOError as e :
self.send_error(404,'File Not Found: %s' % self.path)
if (self._file_1_done and self._file_2_done):
self._reset_flags()
self.server.app_download_complete_event.set()
return CustomHandler
이 사용자 정의 핸들러
class PythonHtpServer(BaseHTTPServer.HTTPServer, threading.Thread):
def __init__(self, port, serve_path):
custom_request_handler_class = RequestHandlerClass(serve_path)
BaseHTTPServer.HTTPServer.__init__(self, ('0.0.0.0', port), custom_request_handler_class)
threading.Thread.__init__(self)
self.app_download_complete_event = threading.Event()
def run(self):
self.serve_forever()
def stop(self):
self.shutdown()
를 사용하여 내 HttpServer에 내가
http_server = PythonHtpServer(port = 8123, serve_path = '/application/main.qml')
서버를 시작으로 서버를 시작,하지만 난이 오류를 얻을
AttributeError: CustomHandler instance has no attribute '_application_path'
기본적으로 오류에서 서버 시작했는데 왜 속성을 만들지 않는지 (또는 init이 호출되지 않음) 모르겠다. 내가 어디로 잘못 가고 있는지 말해줘. 어떤 도움이라도 환영받을 것입니다. (이 예에서, application_path
~ = var
)이 같은