summaryrefslogtreecommitdiff
path: root/src/jobs.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/jobs.py')
-rw-r--r--src/jobs.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/jobs.py b/src/jobs.py
index 67c4e1c..2e6a76a 100644
--- a/src/jobs.py
+++ b/src/jobs.py
@@ -7,6 +7,9 @@ from pytz import utc
from db import SqlDB
from job import Job, JobStatus
+from log import get_logger
+
+logger = get_logger()
class JobScheduler(object):
@@ -18,6 +21,19 @@ class JobScheduler(object):
timezone=utc,
)
+ self.reset_job_status()
+
+ def reset_job_status(self):
+ logger.info('Clearing jobs.')
+ with SqlDB.sql_session() as session:
+ query = session.query(Job).all()
+
+ for instance in query:
+ if instance.status == JobStatus.RUNNING or \
+ instance.status == JobStatus.SCHEDULED:
+ instance.status = JobStatus.CLEARED
+ logger.info(f'Job with ID {instance.id} was cleared.')
+
def get(self):
return self.__scheduler
@@ -41,6 +57,8 @@ class JobScheduler(object):
kwargs['job_id'] = job_id
kwargs['func'] = func
+ logger.info(f'Adding new job with ID {job_id}')
+
self.__scheduler.add_job(Job.starter, kwargs=kwargs)
return job_id
@@ -56,3 +74,14 @@ class JobScheduler(object):
jobs.append(job_dict)
return jobs
+
+ @classmethod
+ def get_job(cls, job_id):
+ with SqlDB.sql_session() as session:
+ job = session.query(Job).filter(Job.id == job_id).one_or_none()
+
+ if job is None:
+ return job
+ job_dict = job.as_dict()
+
+ return job_dict