docs: def start_server(self, port_number, number_of_procs=0):
          """
          Create a HTTP server and start it.
  
          :param int port_number: the port number to bind the server to
          :param int number_of_procs: number of processes to pass to
              Tornado's ``httpserver.HTTPServer.start``.
  
          If the application's ``debug`` setting is ``True``, then we are
          going to run in a single-process mode; otherwise, we'll let
          tornado decide how many sub-processes to spawn.
  
          The following additional configuration parameters can be set on the
          ``httpserver.HTTPServer`` instance by setting them in the application
          settings: ``xheaders``, ``max_body_size``, ``max_buffer_size``.
  
          """
          signal.signal(signal.SIGTERM, self._on_signal)
          signal.signal(signal.SIGINT, self._on_signal)
          xheaders = self.application.settings.get('xheaders', False)
          max_body_size = self.application.settings.get('max_body_size', None)
          max_buffer_size = self.application.settings.get('max_buffer_size',
                                                          None)
  
          self.server = httpserver.HTTPServer(
              self.application.tornado_application,
              xheaders=xheaders,
              max_body_size=max_body_size,
              max_buffer_size=max_buffer_size)
          if self.application.settings.get('debug', False):
              self.logger.info('starting 1 process on port %d', port_number)
              self.server.listen(port_number)
          else:
              self.logger.info('starting processes on port %d', port_number)
              self.server.bind(port_number, reuse_port=True)
              self.server.start(number_of_procs)