2020-04-21 16:34:21 +00:00
|
|
|
from time import sleep
|
|
|
|
from .. import db
|
|
|
|
from ..decorators import background
|
|
|
|
from ..models import Job
|
|
|
|
import os
|
|
|
|
import shutil
|
|
|
|
|
|
|
|
|
|
|
|
@background
|
2020-04-23 06:35:18 +00:00
|
|
|
def delete_job(job_id, *args, **kwargs):
|
|
|
|
app = kwargs['app']
|
2020-04-21 16:34:21 +00:00
|
|
|
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()
|