<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def http_daemon_thread(self):
 """Main function of the http daemon thread will loop forever unless we stop the root daemon The main thing is to have a pool of X concurrent requests for the http_daemon, so "no_lock" calls can always be directly answer without having a "locked" version to finish. This is achieved thanks to the CherryPy thread pool. This function is threaded to be detached from the main process as such it will not block the process main loop.. :return: None """

        logger.debug("HTTP thread running")
        try:
            # This function is a blocking function serving HTTP protocol
            self.http_daemon.run()
        except PortNotFree as exp:
            logger.exception('The HTTP daemon port is not free: %s', exp)
            raise
        except Exception as exp:  # pylint: disable=broad-except
            self.exit_on_exception(exp)
        logger.debug("HTTP thread exiting")