From c75f01c5882b8ce543705f6b34fb57dbf4dd06cb Mon Sep 17 00:00:00 2001 From: vrvencislavov Date: Fri, 3 Oct 2025 17:03:59 +0300 Subject: [PATCH 1/6] Add task execution start time. --- taskflow/__init__.py | 2 +- taskflow/tasks.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/taskflow/__init__.py b/taskflow/__init__.py index ba7bbbc..8a8f8c4 100644 --- a/taskflow/__init__.py +++ b/taskflow/__init__.py @@ -1,5 +1,5 @@ __title__ = "Taskflow" -__version__ = "0.2.1" +__version__ = "0.2.2" from .flow import * # noqa from .tasks import * # noqa diff --git a/taskflow/tasks.py b/taskflow/tasks.py index e63b778..cb2fea8 100644 --- a/taskflow/tasks.py +++ b/taskflow/tasks.py @@ -1,4 +1,5 @@ import sys +from datetime import datetime from taskflow.defaults import Defaults from taskflow.type_helpers import function_from_string, function_to_string, type_to_string @@ -192,6 +193,7 @@ def __init__(self, func=None, args=None, max_runs=None, needs_prev_result=True, super().__init__(max_runs=max_runs, needs_prev_result=needs_prev_result, name=name) self._func = func self._args = args or [] + self._execution_start_time = None @property def func_name(self): @@ -201,6 +203,10 @@ def func_name(self): def args(self): return self._args + @property + def execution_start_time(self): + return self._execution_start_time + def run(self, **kwargs): # overriding args with the prev result # use kwargs for persistent parameters to all Tasks @@ -209,6 +215,7 @@ def run(self, **kwargs): self._runs += 1 try: + self._execution_start_time = datetime.now() self._result = self._func(*args, **kwargs) self._status = self.STATUS_COMPLETE self._error = None From 03f8dc59f9d19f8996891e24fd6b1fe4a2ac4819 Mon Sep 17 00:00:00 2001 From: vrvencislavov Date: Tue, 7 Oct 2025 12:41:13 +0300 Subject: [PATCH 2/6] Move calculating date updated and execution delta time in finally block. --- taskflow/tasks.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/taskflow/tasks.py b/taskflow/tasks.py index cb2fea8..c277ee9 100644 --- a/taskflow/tasks.py +++ b/taskflow/tasks.py @@ -193,7 +193,8 @@ def __init__(self, func=None, args=None, max_runs=None, needs_prev_result=True, super().__init__(max_runs=max_runs, needs_prev_result=needs_prev_result, name=name) self._func = func self._args = args or [] - self._execution_start_time = None + self._date_updated = None + self._execution_delta_time = None @property def func_name(self): @@ -204,8 +205,12 @@ def args(self): return self._args @property - def execution_start_time(self): - return self._execution_start_time + def date_updated(self): + return self._date_updated + + @property + def execution_delta_time(self): + return self._execution_delta_time def run(self, **kwargs): # overriding args with the prev result @@ -224,6 +229,10 @@ def run(self, **kwargs): self._status = self.STATUS_HALTED if self._runs >= self.max_runs else self.STATUS_PENDING self._error = ex self._exc_info = sys.exc_info() + finally: + self._date_updated = datetime.now() + self._execution_delta_time = (self._date_updated - self._execution_start_time).total_seconds() + def __str__(self): return self._name if self._name else f"{function_to_string(self._func)}:{self._args}" From 3c781dc2510c238599d4e9af9f6e68453b1fa3db Mon Sep 17 00:00:00 2001 From: vrvencislavov Date: Tue, 7 Oct 2025 14:21:15 +0300 Subject: [PATCH 3/6] Add execution start time in init. --- taskflow/tasks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/taskflow/tasks.py b/taskflow/tasks.py index c277ee9..4e0d33e 100644 --- a/taskflow/tasks.py +++ b/taskflow/tasks.py @@ -194,6 +194,7 @@ def __init__(self, func=None, args=None, max_runs=None, needs_prev_result=True, self._func = func self._args = args or [] self._date_updated = None + self._execution_start_time = None self._execution_delta_time = None @property From 178e485dcf55596f99ace0e6b2e4fb75d49c534a Mon Sep 17 00:00:00 2001 From: vrvencislavov Date: Tue, 7 Oct 2025 14:43:00 +0300 Subject: [PATCH 4/6] Fix tox. --- taskflow/tasks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/taskflow/tasks.py b/taskflow/tasks.py index 4e0d33e..bc6856b 100644 --- a/taskflow/tasks.py +++ b/taskflow/tasks.py @@ -234,7 +234,6 @@ def run(self, **kwargs): self._date_updated = datetime.now() self._execution_delta_time = (self._date_updated - self._execution_start_time).total_seconds() - def __str__(self): return self._name if self._name else f"{function_to_string(self._func)}:{self._args}" From 3fd6ab89772b82130812906a091ea0a992137e4e Mon Sep 17 00:00:00 2001 From: vrvencislavov Date: Wed, 8 Oct 2025 09:32:57 +0300 Subject: [PATCH 5/6] Small renaming. --- taskflow/tasks.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/taskflow/tasks.py b/taskflow/tasks.py index bc6856b..3ac1931 100644 --- a/taskflow/tasks.py +++ b/taskflow/tasks.py @@ -193,7 +193,7 @@ def __init__(self, func=None, args=None, max_runs=None, needs_prev_result=True, super().__init__(max_runs=max_runs, needs_prev_result=needs_prev_result, name=name) self._func = func self._args = args or [] - self._date_updated = None + self._execution_end_time = None self._execution_start_time = None self._execution_delta_time = None @@ -206,8 +206,8 @@ def args(self): return self._args @property - def date_updated(self): - return self._date_updated + def execution_end_time(self): + return self._execution_end_time @property def execution_delta_time(self): @@ -231,8 +231,8 @@ def run(self, **kwargs): self._error = ex self._exc_info = sys.exc_info() finally: - self._date_updated = datetime.now() - self._execution_delta_time = (self._date_updated - self._execution_start_time).total_seconds() + self._execution_end_time = datetime.now() + self._execution_delta_time = (self._execution_end_time - self._execution_start_time).total_seconds() def __str__(self): return self._name if self._name else f"{function_to_string(self._func)}:{self._args}" From aa327f749697e46bc707056539cffa8f0a2d6d3f Mon Sep 17 00:00:00 2001 From: vrvencislavov Date: Wed, 8 Oct 2025 12:01:09 +0300 Subject: [PATCH 6/6] Remove execution end time. --- taskflow/tasks.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/taskflow/tasks.py b/taskflow/tasks.py index 3ac1931..8cbc6f4 100644 --- a/taskflow/tasks.py +++ b/taskflow/tasks.py @@ -193,7 +193,6 @@ def __init__(self, func=None, args=None, max_runs=None, needs_prev_result=True, super().__init__(max_runs=max_runs, needs_prev_result=needs_prev_result, name=name) self._func = func self._args = args or [] - self._execution_end_time = None self._execution_start_time = None self._execution_delta_time = None @@ -205,10 +204,6 @@ def func_name(self): def args(self): return self._args - @property - def execution_end_time(self): - return self._execution_end_time - @property def execution_delta_time(self): return self._execution_delta_time @@ -231,8 +226,7 @@ def run(self, **kwargs): self._error = ex self._exc_info = sys.exc_info() finally: - self._execution_end_time = datetime.now() - self._execution_delta_time = (self._execution_end_time - self._execution_start_time).total_seconds() + self._execution_delta_time = (datetime.now() - self._execution_start_time).total_seconds() def __str__(self): return self._name if self._name else f"{function_to_string(self._func)}:{self._args}"