def run_rule_async(rule_name, settings): setproctitle("inferno - %s" % rule_name) signal.signal(signal.SIGHUP, signal.SIG_IGN) signal.signal(signal.SIGINT, signal.SIG_IGN) signal.signal(signal.SIGTERM, signal.SIG_IGN) rules = get_rules_by_name( rule_name, settings['rules_directory'], immediate=False) if rules and len(rules) > 0: rule = rules[0] else: log.error('No rule exists with rule_name: %s' % rule_name) raise Exception('No rule exists with rule_name: %s' % rule_name) pid_dir = pid.pid_dir(settings) log.info("Running %s" % rule.name) try: pid.create_pid(pid_dir, rule, str(os.getpid())) execute_rule(rule, settings) except Exception as e: log.exception('%s: %s', rule_name, e) if not rule.retry: pid.create_last_run(pid_dir, rule) else: pid.create_last_run(pid_dir, rule) finally: pid.remove_pid(pid_dir, rule) os._exit(0)
def run_rule_async(rule_name, settings): setproctitle("inferno - %s" % rule_name) signal.signal(signal.SIGHUP, signal.SIG_IGN) signal.signal(signal.SIGINT, signal.SIG_IGN) signal.signal(signal.SIGTERM, signal.SIG_IGN) rules = get_rules_by_name(rule_name, settings['rules_directory'], immediate=False) if rules and len(rules) > 0: rule = rules[0] else: log.error('No rule exists with rule_name: %s' % rule_name) raise Exception('No rule exists with rule_name: %s' % rule_name) pid_dir = pid.pid_dir(settings) log.info("Running %s" % rule.name) try: pid.create_pid(pid_dir, rule, str(os.getpid())) execute_rule(rule, settings) except Exception as e: log.error('%s: %s', rule_name, e) if not rule.retry: pid.create_last_run(pid_dir, rule) else: pid.create_last_run(pid_dir, rule) finally: pid.remove_pid(pid_dir, rule) os._exit(0)
def test_remove_pid(self): # create the pid file eq_(pid.create_pid(self.pid_dir, self.job.rule, str(os.getpid())), True) # remove the pid file pid.remove_pid(self.pid_dir, self.job.rule) # can't remove it again assert_raises(OSError, pid.remove_pid, self.pid_dir, self.job.rule)
def run_rule_async(rule_name, settings): setproctitle("inferno - %s" % rule_name) signal.signal(signal.SIGHUP, signal.SIG_IGN) signal.signal(signal.SIGINT, signal.SIG_IGN) signal.signal(signal.SIGTERM, signal.SIG_IGN) rules = get_rules_by_name(rule_name, settings['rules_directory'], immediate=False) if rules and len(rules) > 0: rule = rules[0] else: log.error('No rule exists with rule_name: %s' % rule_name) raise Exception('No rule exists with rule_name: %s' % rule_name) pid_dir = pid.pid_dir(settings) log.info("Running %s" % rule.name) try: pid.create_pid(pid_dir, rule, str(os.getpid())) execute_rule(rule, settings) except Exception as e: log.error('%s: %s', rule_name, e) if rule.retry: if rule.retry_limit > pid.get_retry_count(pid_dir, rule): log.error('%s: will be retried in %s hour(s)', rule_name, rule.retry_delay) pid.create_next_retry(pid_dir, rule) pid.increment_retry_count(pid_dir, rule) else: log.error('%s: failed max retry limit (%s)', rule_name, rule.retry_limit) pid.create_failed(pid_dir, rule) else: if rule.retry: # Failed before, however, ran successfully this time. Clean up fail/retry files pid.clean_up(pid_dir, rule) pid.create_last_complete(pid_dir, rule) finally: pid.remove_pid(pid_dir, rule) os._exit(0)
def run_rule_async(rule_name, settings): setproctitle("inferno - %s" % rule_name) signal.signal(signal.SIGHUP, signal.SIG_IGN) signal.signal(signal.SIGINT, signal.SIG_IGN) signal.signal(signal.SIGTERM, signal.SIG_IGN) rules = get_rules_by_name( rule_name, settings['rules_directory'], immediate=False) if rules and len(rules) > 0: rule = rules[0] else: log.error('No rule exists with rule_name: %s' % rule_name) raise Exception('No rule exists with rule_name: %s' % rule_name) pid_dir = pid.pid_dir(settings) log.info("Running %s" % rule.name) try: pid.create_pid(pid_dir, rule, str(os.getpid())) execute_rule(rule, settings) except Exception as e: log.error('%s: %s', rule_name, e) if rule.retry: if rule.retry_limit > pid.get_retry_count(pid_dir, rule): log.error('%s: will be retried in %s hour(s)', rule_name, rule.retry_delay) pid.create_next_retry(pid_dir, rule) pid.increment_retry_count(pid_dir, rule) else: log.error('%s: failed max retry limit (%s)', rule_name, rule.retry_limit) pid.create_failed(pid_dir, rule) else: if rule.retry: # Failed before, however, ran successfully this time. Clean up fail/retry files pid.clean_up(pid_dir, rule) pid.create_last_complete(pid_dir, rule) finally: pid.remove_pid(pid_dir, rule) os._exit(0)