def start(self, args_extra=[]): # unsure about the best way to specify target mod = self.jcf.get('module', '') script = self.jcf.get('script', '') cls = self.jcf.get('class', '') args = [self.jcf.filename, self.jname] args.extend(args_extra) if mod: cmd = ['python', '-m', mod] + args elif script: cmd = [script] + args else: raise skytools.UsageError( 'JobState.start: dunno how to launch class') self.log.info('Launching %s: %s', self.jname, " ".join(cmd)) if sys.platform == 'win32': p = subprocess.Popen(cmd, close_fds=True) self.proc = None else: cmd.append('-d') p = subprocess.Popen(cmd, close_fds=True, stdin=open(os.devnull, 'rb'), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) skytools.set_nonblocking(p.stdout, True) self.proc = p self.start_count += 1 self.start_time = time.time() self.dead_since = None self.watchdog_reset = self.jcf.getint('watchdog-reset', 60 * 60) self.watchdog_formula_a = self.jcf.getint('watchdog-formula-a', 0) self.watchdog_formula_b = self.jcf.getint('watchdog-formula-b', 5) self.watchdog_formula_cap = self.jcf.getint('watchdog-formula-cap', 0) if self.watchdog_formula_cap <= 0: self.watchdog_formula_cap = None self.timer = PeriodicCallback(self.handle_timer, TIMER_TICK * 1000, self.ioloop) self.timer.start()
def start (self, args_extra = []): # unsure about the best way to specify target mod = self.jcf.get('module', '') script = self.jcf.get('script', '') cls = self.jcf.get('class', '') args = [self.jcf.filename, self.jname] args.extend (args_extra) if mod: cmd = ['python', '-m', mod] + args elif script: cmd = [script] + args else: raise skytools.UsageError('JobState.start: dunno how to launch class') self.log.info('Launching %s: %s', self.jname, " ".join(cmd)) if sys.platform == 'win32': p = subprocess.Popen(cmd, close_fds = True) self.proc = None else: cmd.append('-d') p = subprocess.Popen(cmd, close_fds = True, stdin = open(os.devnull, 'rb'), stdout = subprocess.PIPE, stderr = subprocess.STDOUT) skytools.set_nonblocking(p.stdout, True) self.proc = p self.start_count += 1 self.start_time = time.time() self.dead_since = None self.watchdog_reset = self.jcf.getint ('watchdog-reset', 60*60) self.watchdog_formula_a = self.jcf.getint ('watchdog-formula-a', 0) self.watchdog_formula_b = self.jcf.getint ('watchdog-formula-b', 5) self.watchdog_formula_cap = self.jcf.getint ('watchdog-formula-cap', 0) if self.watchdog_formula_cap <= 0: self.watchdog_formula_cap = None self.timer = PeriodicCallback (self.handle_timer, TIMER_TICK * 1000, self.ioloop) self.timer.start()