| 1234567891011121314151617181920212223242526 | import logging
from celery import shared_task  # type: ignore
from extensions.ext_database import db
from models.account import Account
from services.billing_service import BillingService
from tasks.mail_account_deletion_task import send_deletion_success_task
logger = logging.getLogger(__name__)
@shared_task(queue="dataset")
def delete_account_task(account_id):
    account = db.session.query(Account).filter(Account.id == account_id).first()
    try:
        BillingService.delete_account(account_id)
    except Exception as e:
        logger.exception(f"Failed to delete account {account_id} from billing service.")
        raise
    if not account:
        logger.error(f"Account {account_id} not found.")
        return
    # send success email
    send_deletion_success_task.delay(account.email)
 |