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