Skip to content
Snippets Groups Projects
tasks.py 895 B
from time import sleep
from .. import db
from ..decorators import background
from ..models import Job
import os
import shutil


@background
def delete_job(app, job_id):
    with app.app_context():
        job = Job.query.get(job_id)
        if job is None:
            return
        if job.status not in ['complete', 'failed']:
            job.status = 'canceling'
            db.session.commit()
            while job.status != 'canceled':
                # In case the daemon handled a job in any way
                if job.status != 'canceling':
                    job.status = 'canceling'
                    db.session.commit()
                sleep(1)
                db.session.refresh(job)
        path = os.path.join(app.config['NOPAQUE_STORAGE'], str(job.user_id),
                            'jobs', str(job.id))
        shutil.rmtree(path, ignore_errors=True)
        job.delete()