def __init__(self, config_file): config = ConfigParser.ConfigParser() config.readfp(open(config_file)) self.log_file = config.get("Logging", "file") logging.basicConfig(filename = self.log_file, level = logging.DEBUG, format = "%(levelname)8s || %(asctime)23s || Module %(module)15s:%(lineno)3d || %(message)s") self.db_params = [config.get("SQLite", "database")] self.db = database(self.db_params) self.wake_interval = int(config.get("Agent", "wake_every")) self.local_timezone = pytz.timezone ("America/New_York") self.woke_at = self.utc_for(datetime.now()) self.tasks = dict([(t.taskName, t) for t in tasks.TaskTypes]) self.ST_user_cache = [] self.ST_TN_cache = [] self.expire = False self.blackboard = {} self.start_time = datetime.now() self.last_status = datetime.now() logging.info("Initialized agent with config: %s", config_file)
def wake(self): self.db = database(self.db_params) self.woke_at = self.utc_for(datetime.now()) logging.debug("Woke at: %s", self.woke_at) self.process_tasks() if not self.expire: threading.Timer(self.wake_interval, self.wake).start() self.db.commit() self.db.close() self.db = None self.wakes += 1 now = datetime.now() diff = (now - self.last_status).total_seconds() if diff > INTERVAL: minutes = (now - self.start_time).total_seconds() / 60 logging.info("Wakes per minute: %f" % (self.wakes / minutes)) logging.info("Tasks per minute: %f" % (self.tasks_completed / minutes)) self.last_status = now