docs: def run(self, port_number, number_of_procs=0):
          """
          Create the server and run the IOLoop.
  
          :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 based on the value of the
          ``number_of_procs`` argument.  In any case, the application's
          *before_run* callbacks are invoked.  If a callback raises an exception,
          then the application is terminated by calling :func:`sys.exit`.
  
          If any ``on_start`` callbacks are registered, they will be added to
          the Tornado IOLoop for execution after the IOLoop is started.
  
          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``.
  
          """
          self.start_server(port_number, number_of_procs)
          iol = ioloop.IOLoop.instance()
  
          try:
              self.application.start(iol)
          except Exception:
              self.logger.exception('application terminated during start, '
                                    'exiting')
              sys.exit(70)
  
          iol.start()