from tortoise import Tortoise from datetime import datetime, timedelta from App.Subscriptions.Model import Subscription import logging logger = logging.getLogger(__name__) async def check_expiring_subscriptions(): """ Background task to check for subscriptions that are about to expire and update their status accordingly. """ try: # Get the current time current_time = datetime.now() # Define the threshold for expiring subscriptions (e.g., 1 hour) threshold = current_time + timedelta(hours=1) # Fetch subscriptions that are about to expire expiring_subscriptions = await Subscription.filter( active=True, expiration_time__lt=threshold ).all() for subscription in expiring_subscriptions: # Deactivate the subscription subscription.active = False await subscription.save() logger.info( f"Subscription {subscription.id} has been deactivated due to expiration." ) except Exception as e: logger.error(f"Error checking expiring subscriptions: {str(e)}")