From 1e233d21043fff03b942a8036d687228fc08cb80 Mon Sep 17 00:00:00 2001 From: Sergei Trofimov Date: Fri, 15 Sep 2017 13:44:20 +0100 Subject: [PATCH] framework/job: track run time. Job now tracks how long it took to run the workload and save the timedelta value in the run_time attribute. --- wa/framework/job.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wa/framework/job.py b/wa/framework/job.py index 1de6625b..d3c15090 100644 --- a/wa/framework/job.py +++ b/wa/framework/job.py @@ -1,4 +1,5 @@ import logging +from datetime import datetime from wa.framework import pluginloader, signal from wa.framework.configuration.core import Status @@ -37,6 +38,7 @@ class Job(object): self.context = context self.workload = None self.output = None + self.run_time = None self.retries = 0 self._status = Status.NEW @@ -71,7 +73,11 @@ class Job(object): def run(self, context): self.logger.info('Running job {}'.format(self.id)) with signal.wrap('WORKLOAD_EXECUTION', self, context): - self.workload.run(context) + start_time = datetime.utcnow() + try: + self.workload.run(context) + finally: + self.run_time = datetime.utcnow() - start_time def process_output(self, context): self.logger.info('Processing output for job {}'.format(self.id))