code: def start(self, timeout=None):
          
          if self._running.isSet():
              raise RuntimeError('Server already started')
          self._stopped.clear()
          # Make sure we have an ioloop
          self.ioloop = self._ioloop_manager.get_ioloop()
          self._ioloop_manager.start()
          # Set max_buffer_size to ensure streams are closed
          # if too-large messages are received
          self._tcp_server = tornado.tcpserver.TCPServer(
              self.ioloop, max_buffer_size=self.MAX_MSG_SIZE)
          self._tcp_server.handle_stream = self._handle_stream
          self._server_sock = self._bind_socket(self._bindaddr)
          self._bindaddr = self._server_sock.getsockname()
  
          self.ioloop.add_callback(self._install)
          if timeout:
              return self._running.wait(timeout)
docs: Install the server on its IOLoop, optionally starting the IOLoop.
  
          Parameters
          ----------
          timeout : float or None, optional
              Time in seconds to wait for server thread to start.