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))
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))
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))
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)
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)
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)
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
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
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