nopaque/web/app/jobs/tasks.py
2020-06-05 14:42:04 +02:00

30 lines
931 B
Python

from time import sleep
from .. import db
from ..decorators import background
from ..models import Job
import os
import shutil
@background
def delete_job(job_id, *args, **kwargs):
app = kwargs['app']
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()