def _get_sessions(curs=None): from_d = datetime.datetime.now(pytz.utc) logger.info("Sessions dumping into db initiated %s", from_d) from_d = from_d - datetime.timedelta(minutes=settings.session_valid_minutes) logger.debug("Fetching not expired sessions, newer %s. Session valid period: %s minutes", from_d, settings.session_valid_minutes) f = SessionFilter({'from_update_date': from_d}, {}, ['id']) return f.filter_objs(curs)
def _clean(curs=None): to_d = datetime.datetime.now() logger.info("Sessions cleaning initiated %s", to_d) to_d = to_d - datetime.timedelta(minutes=settings.session_valid_minutes) logger.debug("Removing session older %s. Session valid period: %s minutes", to_d, settings.session_valid_minutes) f = SessionFilter({'to_update_date': to_d}, {}, ['id']) sessions = f.filter_objs(curs) logger.info("Deleting %s sessions", len(sessions)) mapping.delete_objects(curs, sessions) logger.info("Sessions cleaned")
def dump_into_db(trn_wrapper): if not settings.session_caching_enabled: logger.debug("Sessions caching disabled. Nothing to dump") return @trn_wrapper() def _get_sessions(curs=None): from_d = datetime.datetime.now(pytz.utc) logger.info("Sessions dumping into db initiated %s", from_d) from_d = from_d - datetime.timedelta(minutes=settings.session_valid_minutes) logger.debug("Fetching not expired sessions, newer %s. Session valid period: %s minutes", from_d, settings.session_valid_minutes) f = SessionFilter({'from_update_date': from_d}, {}, ['id']) return f.filter_objs(curs) @trn_wrapper() def _dump_session(mem_cache, session, curs=None): f = SessionFilter({'session_id': session.session_id}, {}, None) try: s = f.filter_one_obj(curs, for_update=True) sess_id = s.session_id.encode('utf8') cached_s = mem_cache.get(sess_id) if cached_s is None: logger.debug("Session %s not found in cache", sess_id) else: logger.debug("Cached session %s update date: %s", cached_s.session_id, cached_s.update_date) logger.debug("Db session %s update date: %s", s.session_id, s.update_date) if cached_s.update_date > s.update_date: s.update_date = cached_s.update_date mapping.save(curs, s) logger.debug("Session %s dumped from cache into db", sess_id) else: logger.debug("Session %s update_date in db greater or equal " \ "cached value. Noting to dump", sess_id) except SessionNotFound, e: logger.debug("Dumping session failed: %s", e)
def run(): while True: dump_into_db(transaction) logger.debug('Sleeping %s minutes', settings.session_dump_to_db_minutes) sleep(settings.session_dump_to_db_minutes * 60)
def _dump_session(mem_cache, session, curs=None): f = SessionFilter({'session_id': session.session_id}, {}, None) try: s = f.filter_one_obj(curs, for_update=True) sess_id = s.session_id.encode('utf8') cached_s = mem_cache.get(sess_id) if cached_s is None: logger.debug("Session %s not found in cache", sess_id) else: logger.debug("Cached session %s update date: %s", cached_s.session_id, cached_s.update_date) logger.debug("Db session %s update date: %s", s.session_id, s.update_date) if cached_s.update_date > s.update_date: s.update_date = cached_s.update_date mapping.save(curs, s) logger.debug("Session %s dumped from cache into db", sess_id) else: logger.debug("Session %s update_date in db greater or equal " \ "cached value. Noting to dump", sess_id) except SessionNotFound, e: logger.debug("Dumping session failed: %s", e)
def run(): while True: clean(transaction) logger.debug('Sleeping %s minutes', settings.session_cleaning_minutes) sleep(settings.session_cleaning_minutes * 60)