def notify(self, succeed): """ Notify someone responsible about job result. """ params = {} if succeed: if self.jobcfg['notify_success']: params = UpqQueueMngr().getParams(self.jobcfg['notify_success']) params['msg'] = self.msgstr params['success'] = True else: if self.jobcfg['notify_fail']: params = UpqQueueMngr().getParams(self.jobcfg['notify_fail']) params['msg'] = self.msgstr params['success'] = False if params: notify_job = UpqQueueMngr().new_job("notify", params) if isinstance(notify_job, UpqJob): # data of this job carried over to Notify job notify_job.jobdata['job'] = {"jobname": self.jobname, "jobcfg" : self.jobcfg, "jobdata": self.jobdata, "jobid" : self.jobid, "msgstr" : self.msgstr, "result" : self.result, "retries": self.retries} UpqQueueMngr().enqueue_job(notify_job)
def handle(self): logger.debug("new connection from '%s'", self.client_address) response = "" err = "" while True: self.data = self.rfile.readline().strip() if not self.data: break logger.debug("received: '%s'", self.data) try: uj = UpqQueueMngr().new_job_by_string(self.data) if isinstance(uj, UpqJob): if uj.check(): self.wfile.write("ACK " + uj.msgstr + "\n") else: self.wfile.write("ERR " + uj.msgstr + "\n") else: msg = "Unknown command: %s" % self.data logger.debug(msg) self.wfile.write("ERR " + msg + '\n') break except Exception as e: logger.error("Exception on job: %s" % (traceback.format_exc(100))) self.wfile.write("ERR Exception caught while handling job\n") logger.debug("sent: '%s'", uj.msgstr) logger.debug("end of transmission")
def handle(self): logger.debug("new connection from '%s'", self.client_address) response="" err="" while True: self.data = self.rfile.readline().strip() if not self.data: break logger.debug("received: '%s'", self.data) try: uj=UpqQueueMngr().new_job_by_string(self.data) if isinstance(uj,UpqJob): if uj.check(): self.wfile.write("ACK " + uj.msgstr + "\n"); else: self.wfile.write("ERR " + uj.msgstr + "\n"); else: msg="Unknown command: %s"% self.data logger.debug(msg) self.wfile.write("ERR "+msg+'\n') break except Exception as e: logger.error("Exception on job: %s" %(traceback.format_exc(100))) self.wfile.write("ERR Exception caught while handling job\n") logger.debug("sent: '%s'", uj.msgstr) logger.debug("end of transmission")
def start_subjobs(self,job): """ checks if a job has a subjob and runs it """ if self.jobdata.has_key('subjobs') and len(job.jobdata['subjobs'])>0: jobname=job.jobdata['subjobs'].pop() newjob=UpqQueueMngr().new_job(jobname, job.jobdata) newjob.check()
def _retrywait(self, tries, waittime): """ redo job 'tries' (int) times, waiting 'waittime' (int) seconds before each run """ if waittime: log.getLogger().info("Waiting %d seconds before retry.", waittime) time.sleep(waittime) if self.jobdata['job']['retries'] >= tries: log.getLogger().info("Tried %d times, no more retries.", self.jobdata['job']['retries']) return False else: # recreate job retry_job = UpqQueueMngr().new_job(self.jobdata['job']['jobname'], self.jobdata['job']['jobdata']) for key in self.jobdata['job'].keys(): # copy data to allow release of old job resources setattr(retry_job, key, copy.deepcopy(self.jobdata['job'][key])) retry_job.retries += 1 log.getLogger().info("retrying job '%s' for the %d. time", retry_job.jobname, retry_job.retries) UpqQueueMngr().enqueue_job(retry_job)