Exemplo n.º 1
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")
Exemplo n.º 2
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)