<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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()