Exemple #1
0
 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)
Exemple #2
0
 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")
Exemple #3
0
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)
Exemple #5
0
 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)