Chepuhagram/srv/app/tasks.py

36 lines
1.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from sqlalchemy import delete, select
from sqlalchemy.ext.asyncio import AsyncSession
from datetime import datetime, timedelta, timezone
from app.db import models
async def delete_old_sessions(db: AsyncSession):
"""
Удаляет сессии, которые не были активны более 30 дней.
"""
thirty_days_ago = datetime.now(timezone.utc) - timedelta(days=30)
# Собираем информацию о сессиях, которые будут удалены
# Это полезно для отладки и для отправки уведомлений, если потребуется
expired_sessions_query = select(models.Session).where(models.Session.last_active < thirty_days_ago)
expired_sessions_result = await db.execute(expired_sessions_query)
expired_sessions = expired_sessions_result.scalars().all()
# Если есть что удалять
if expired_sessions:
# Здесь можно было бы добавить логику для уведомления пользователей через WebSocket,
# но для автоматической очистки это может быть избыточно.
# Просто удаляем.
delete_query = (
delete(models.Session)
.where(models.Session.last_active < thirty_days_ago)
)
result = await db.execute(delete_query)
await db.commit()
print(f"[{datetime.now()}] CRON: Успешно удалено {result.rowcount} истекших сессий.")
else:
print(f"[{datetime.now()}] CRON: Истекшие сессии для удаления не найдены.")