Пример #1
0
    def run_jobs(self, job_source):
        active_jobs = 0
        while True:
            if active_jobs < self.number_of_workers:
                try:
                    job = job_source.get_job()
                except Exception, e:
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from get_job()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
                if job is not NoJobAvailable:
                    #sys.stderr.write("MGR: sending %s\n" % repr(job))
                    self.job_queue.put(job)
                    active_jobs += 1
                    continue
            if active_jobs == 0:
                break

            response = self.response_queue.get()
            if isinstance(response, JobError):
                try:
                    job_source.process_error_response(response.job,
                                                      response.msg)
                except Exception, e:
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from process_error_response()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
Пример #2
0
    def run_jobs(self, job_source):
        active_jobs = 0
        while True:
            if active_jobs < self.number_of_workers:
                try:
                    job = job_source.get_job()
                except Exception, e:
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from get_job()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
                if job is not NoJobAvailable:
                    #sys.stderr.write("MGR: sending %s\n" % repr(job))
                    self.job_queue.put(job)
                    active_jobs += 1
                    continue
            if active_jobs == 0:
                break

            response = self.response_queue.get()
            if isinstance(response, JobError):
                try:
                    job_source.process_error_response(
                        response.job, response.msg)
                except Exception, e:
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from process_error_response()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
Пример #3
0
 def run_jobs(self, job_source):
     while True:
         try:
             job = job_source.get_job()
         except Exception, e:
             for cls in self.passed_exceptions:
                 if isinstance(e, cls):
                     raise
             raise JobSourceError(
                 "error from get_job()\n%s" %
                 compact_tracebacks.format_traceback(skip=1))
         if job is NoJobAvailable:
             break
         try:
             response = job.run()
         except Exception, e:
             if isinstance(e, JobFailed):
                 msg = str(e)
             else:
                 msg = compact_tracebacks.format_traceback(skip=1)
             try:
                 job_source.process_error_response(job, msg)
             except Exception, e:
                 for cls in self.passed_exceptions:
                     if isinstance(e, cls):
                         raise
                 raise JobSourceError(
                     "error from process_error_response()\n%s" %
                     compact_tracebacks.format_traceback(skip=1))
Пример #4
0
 def _do_command(self, command, args):
     try:
         handler = self.handlers[command]
     except KeyError:
         raise GtpError("unknown command")
     try:
         return handler(args)
     except (GtpError, GtpQuit):
         raise
     except Exception:
         traceback = compact_tracebacks.format_traceback(skip=1)
         if self.handler_exceptions_are_fatal:
             raise GtpFatalError("internal error; exiting\n" + traceback)
         else:
             raise GtpError("internal error\n" + traceback)
Пример #5
0
 def _do_command(self, command, args):
     try:
         handler = self.handlers[command]
     except KeyError:
         raise GtpError("unknown command")
     try:
         return handler(args)
     except (GtpError, GtpQuit):
         raise
     except Exception:
         traceback = compact_tracebacks.format_traceback(skip=1)
         if self.handler_exceptions_are_fatal:
             raise GtpFatalError("internal error; exiting\n" + traceback)
         else:
             raise GtpError("internal error\n" + traceback)
Пример #6
0
def worker_run_jobs(job_queue, response_queue):
    try:
        #pid = os.getpid()
        #sys.stderr.write("worker %d starting\n" % pid)
        while True:
            job = job_queue.get()
            #sys.stderr.write("worker %d: %s\n" % (pid, repr(job)))
            if isinstance(job, Worker_finish_signal):
                break
            try:
                response = job.run()
            except JobFailed, e:
                response = JobError(job, str(e))
                sys.exc_clear()
                del e
            except Exception:
                response = JobError(
                    job, compact_tracebacks.format_traceback(skip=1))
                sys.exc_clear()
            response_queue.put(response)
Пример #7
0
def worker_run_jobs(job_queue, response_queue, worker_id):
    try:
        # pid = os.getpid()
        # sys.stderr.write("worker %d starting\n" % pid)
        while True:
            job = job_queue.get()
            # sys.stderr.write("worker %d: %s\n" % (pid, repr(job)))
            if isinstance(job, Worker_finish_signal):
                break
            try:
                response = job.run(worker_id)
            except JobFailed, e:
                response = JobError(job, str(e))
                sys.exc_clear()
                del e
            except Exception:
                response = JobError(
                    job, compact_tracebacks.format_traceback(skip=1))
                sys.exc_clear()
            response_queue.put(response)
Пример #8
0
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from process_error_response()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
            else:
                try:
                    job_source.process_response(response)
                except Exception, e:
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from process_response()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
            active_jobs -= 1
            #sys.stderr.write("MGR: received response %s\n" % repr(response))

    def finish(self):
        for _ in range(self.number_of_workers):
            self.job_queue.put(worker_finish_signal)
        for worker in self.workers:
            worker.join()
        self.job_queue = None
        self.response_queue = None

class In_process_job_manager(Job_manager):
    def start_workers(self):
        pass
Пример #9
0
            raise
        except ControlFileError, e:
            raise
        except:
            raise ControlFileError(compact_tracebacks.format_error_and_line())

        if config.get("competition_type") != self.competition_type:
            raise ControlFileError("competition_type improperly specified")

        try:
            self._initialise_from_control_file(config)
        except ControlFileError:
            raise
        except Exception, e:
            raise RingmasterError("unhandled error in control file:\n%s" %
                                  compact_tracebacks.format_traceback(skip=1))

        try:
            self.competition.initialise_from_control_file(config)
        except ControlFileError:
            raise
        except Exception, e:
            raise RingmasterError("unhandled error in control file:\n%s" %
                                  compact_tracebacks.format_traceback(skip=1))

    @staticmethod
    def _parse_competition_type(source):
        """Find the compitition_type definition in the control file.

        source -- string
Пример #10
0
            raise
        except ControlFileError, e:
            raise
        except:
            raise ControlFileError(compact_tracebacks.format_error_and_line())

        if config.get("competition_type") != self.competition_type:
            raise ControlFileError("competition_type improperly specified")

        try:
            self._initialise_from_control_file(config)
        except ControlFileError:
            raise
        except Exception, e:
            raise RingmasterError("unhandled error in control file:\n%s" %
                                  compact_tracebacks.format_traceback(skip=1))

        try:
            self.competition.initialise_from_control_file(config)
        except ControlFileError:
            raise
        except Exception, e:
            raise RingmasterError("unhandled error in control file:\n%s" %
                                  compact_tracebacks.format_traceback(skip=1))

    @staticmethod
    def _parse_competition_type(source):
        """Find the compitition_type definition in the control file.

        source -- string
Пример #11
0
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from process_error_response()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
            else:
                try:
                    job_source.process_response(response)
                except Exception, e:
                    for cls in self.passed_exceptions:
                        if isinstance(e, cls):
                            raise
                    raise JobSourceError(
                        "error from process_response()\n%s" %
                        compact_tracebacks.format_traceback(skip=1))
            active_jobs -= 1
            # sys.stderr.write("MGR: received response %s\n" % repr(response))

    def finish(self):
        for _ in range(self.number_of_workers):
            self.job_queue.put(worker_finish_signal)
        for worker in self.workers:
            worker.join()
        self.job_queue = None
        self.response_queue = None


class In_process_job_manager(Job_manager):
    def start_workers(self):
        pass