Пример #1
0
	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)
Пример #2
0
    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")
Пример #3
0
	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")
Пример #4
0
	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()
Пример #5
0
	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)