| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | import loggingimport timeimport clickfrom celery import shared_task  # type: ignorefrom extensions.ext_database import dbfrom extensions.ext_storage import storagefrom models.dataset import Datasetfrom models.model import UploadFile@shared_task(queue="dataset")def batch_clean_template_task(template_ids: list[str], dataset_id: str, doc_form: str, file_ids: list[str]):    """    Clean template when template deleted.    :param template_ids: template ids    :param dataset_id: dataset id    :param doc_form: doc_form    :param file_ids: file ids    Usage: batch_clean_template_task.delay(template_ids, dataset_id)    """    logging.info(click.style("Start batch clean templates when templates deleted", fg="green"))    start_at = time.perf_counter()    try:        dataset = db.session.query(Dataset).filter(Dataset.id == dataset_id).first()        if not dataset:            raise Exception("template has no dataset")        if file_ids:            files = db.session.query(UploadFile).filter(UploadFile.id.in_(file_ids)).all()            for file in files:                try:                    storage.delete(file.key)                except Exception:                    logging.exception("Delete file failed when template deleted, file_id: {}".format(file.id))                db.session.delete(file)            db.session.commit()        end_at = time.perf_counter()        logging.info(            click.style(                "Cleaned templates when templates deleted latency: {}".format(end_at - start_at),                fg="green",            )        )    except Exception:        logging.exception("Cleaned templates when templates deleted failed")
 |