I have to pass a parameter to SimpleHTTPRequestHandler class, so I used class factory to create a custom handler as below.
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 
This is my httpserver using the custom handler
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()    
and I start the server with
http_server = PythonHtpServer(port = 8123, serve_path = '/application/main.qml')
The server starts, but I get this error
AttributeError: CustomHandler instance has no attribute '_application_path'
Basically, from the error, the server did start but I don't know why it is not creating the attributes ( or the init is not called ). Please tell me where I am going wrong. Any help would be welcome.