forked from killua/TakwayPlatform
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
|
from .dependencies.database import get_db
|
||
|
from .dependencies.redis import get_redis
|
||
|
from .dependencies.logger import get_logger
|
||
|
from .models import Session
|
||
|
from datetime import datetime, timedelta
|
||
|
|
||
|
logger = get_logger()
|
||
|
|
||
|
def updating_redis_cache():
|
||
|
db = next(get_db())
|
||
|
redis = get_redis()
|
||
|
current_time = datetime.now()
|
||
|
two_days_ago = current_time - timedelta(days=2)
|
||
|
db.begin()
|
||
|
try:
|
||
|
expired_sessions = db.query(Session.id).filter(Session.last_activity < two_days_ago).all()
|
||
|
for session_id_tuple in expired_sessions:
|
||
|
session_id = session_id_tuple[0]
|
||
|
session_content = redis.get(session_id)
|
||
|
if session_content is None:
|
||
|
logger.error(f"Session {session_id} not found in Redis cache")
|
||
|
continue
|
||
|
redis.delete(session_id)
|
||
|
db.query(Session).filter(Session.id == session_id).update({'content':session_content})
|
||
|
db.commit()
|
||
|
except Exception as e:
|
||
|
db.rollback()
|
||
|
raise e
|
||
|
finally:
|
||
|
db.close()
|
||
|
logger.info("Redis cache updated successfully")
|