diff options
Diffstat (limited to 'src/jobs.py')
| -rw-r--r-- | src/jobs.py | 29 |
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 |
