|
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: |
|
|
|
current_time = datetime.now() |
|
|
|
|
|
threshold = current_time + timedelta(hours=1) |
|
|
|
|
|
expiring_subscriptions = await Subscription.filter( |
|
active=True, expiration_time__lt=threshold |
|
).all() |
|
|
|
for subscription in expiring_subscriptions: |
|
|
|
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)}") |
|
|