Beispiel #1
0
class TimerWheel():
    def __init__(self):
        self.scheduler = Scheduler()

    def add_task(self, name, task, tick=20):
        logger.debug("add task", task, 'name', name, 'tick', tick)
        self.scheduler.schedule(name, every_second(tick), task)

    def start(self):
        logger.debug('run task for ever')
        self.add_task('default task', TimerWheel._pattern_rule)
        self.scheduler.run_forever()

    @staticmethod
    def _pattern_rule():
        rules = _query_rules()
        if rules is None or len(rules) <= 0:
            logger.info('rules is empty')
            return
        for s_rule in rules:
            if not isinstance(s_rule, dict):
                logger.info('The rule is invalid', s_rule)
                continue
            need_alarm = True
            for obj, condition in s_rule.items():
                # if not list ,skip and continue
                if not isinstance(condition, list):
                    continue
                expression = _get_expression(condition)
                if len(expression) <= 0:
                    continue
                if not validate(obj, expression):
                    need_alarm = False
                    break
            if need_alarm:
                _send_alarm(s_rule)
                _send_email(s_rule)

    def stop(self):
        self.scheduler.stop()
Beispiel #2
0
class TimerWheel():
    def __init__(self):
        self.scheduler = Scheduler()

    def add_task(self, name, task, tick=20):
        logger.debug("add task", task, 'name', name, 'tick', tick)
        self.scheduler.schedule(name, every_second(tick), task)

    def start(self):
        logger.debug('run task for ever')
        self.add_task('default task', TimerWheel._pattern_rule)
        self.scheduler.run_forever()

    @staticmethod
    def _pattern_rule():
        rules = _query_rules()
        if rules is None or len(rules) <= 0:
            logger.info('rules is empty')
            return
        for s_rule in rules:
            if not isinstance(s_rule, dict):
                logger.info('The rule is invalid', s_rule)
                continue
            need_alarm = True
            for obj, condition in s_rule.items():
                # if not list ,skip and continue
                if not isinstance(condition, list):
                    continue
                expression = _get_expression(condition)
                if len(expression) <= 0:
                    continue
                if not validate(obj, expression):
                    need_alarm = False
                    break
            if need_alarm:
                _send_alarm(s_rule)
                _send_email(s_rule)

    def stop(self):
        self.scheduler.stop()
Beispiel #3
0
 def __init__(self):
     self.scheduler = Scheduler()
Beispiel #4
0
 def __init__(self):
     self.scheduler = Scheduler()