GeminiBalance / app /service /request_log /request_log_service.py
CatPtain's picture
Upload 77 files
76b9762 verified
"""
Service for request log operations.
"""
from datetime import datetime, timedelta, timezone
from sqlalchemy import delete
from app.database.connection import database
from app.config.config import settings
from app.database.models import RequestLog
from app.log.logger import get_request_log_logger
logger = get_request_log_logger()
async def delete_old_request_logs_task():
"""
定时删除旧的请求日志。
"""
if not settings.AUTO_DELETE_REQUEST_LOGS_ENABLED:
logger.info(
"Auto-delete for request logs is disabled by settings. Skipping task."
)
return
days_to_keep = settings.AUTO_DELETE_REQUEST_LOGS_DAYS
logger.info(
f"Starting scheduled task to delete old request logs older than {days_to_keep} days."
)
try:
cutoff_date = datetime.now(timezone.utc) - timedelta(days=days_to_keep)
query = delete(RequestLog).where(RequestLog.request_time < cutoff_date)
if not database.is_connected:
logger.info("Connecting to database for request log deletion.")
await database.connect()
result = await database.execute(query)
logger.info(
f"Request logs older than {cutoff_date} potentially deleted. Rows affected: {result.rowcount if result else 'N/A'}"
)
except Exception as e:
logger.error(
f"An error occurred during the scheduled request log deletion: {str(e)}",
exc_info=True,
)