def start(self, timeout_secs=<NUM_LIT>):
def _handle_timeout(signum, frame):<EOL><INDENT>raise HerokuTimeoutError(<EOL>"<STR_LIT>".format(timeout_secs, self._record)<EOL>)<EOL><DEDENT>if self.is_running:<EOL><INDENT>self.out.log("<STR_LIT>")<EOL>return<EOL><DEDENT>signal.signal(signal.SIGALRM, _handle_timeout)<EOL>signal.alarm(timeout_secs)<EOL>self._boot()<EOL>try:<EOL><INDENT>success = self._verify_startup()<EOL><DEDENT>finally:<EOL><INDENT>signal.alarm(<NUM_LIT:0>)<EOL><DEDENT>if not success:<EOL><INDENT>self.stop(signal.SIGKILL)<EOL>raise HerokuStartupError(<EOL>"<STR_LIT>".format(self._record)<EOL>)<EOL><DEDENT>return True<EOL>
Start the heroku local subprocess group and verify that
        it has started successfully.

        The subprocess output is checked for a line matching 'success_regex'
        to indicate success. If no match is seen after 'timeout_secs',
        a HerokuTimeoutError is raised.