docs: def run(self, host: str="localhost", port: int=8000, debug: bool=False):
          """
          start the http server
          :param host: The listening host
          :param port: The listening port
          :param debug: whether it is in debug mod or not
          """
          self.debug = debug
          loop = asyncio.get_event_loop()
  
          try:
              loop.run_until_complete(self.start_server(host, port))
              loop.run_forever()
          except KeyboardInterrupt:
              loop.run_until_complete(self.signal_manager.activate('before_close'))
              loop.run_until_complete(self.close_server_async())
              loop.run_until_complete(self.signal_manager.activate('after_close'))
              loop.run_until_complete(asyncio.gather(*asyncio.Task.all_tasks()))
              loop.close()