Esempio n. 1
0
File: jobmgr.py Progetto: postsql/cc
    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()
Esempio n. 2
0
File: jobmgr.py Progetto: postsql/cc
    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()