Spaces:
Paused
Paused
| """ | |
| 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, | |
| ) | |