Skip to content

Commit 3a56dcc

Browse files
authored
Specify sum of succeeded task runtime seconds (#18)
1 parent 1f09eee commit 3a56dcc

2 files changed

Lines changed: 4 additions & 1 deletion

File tree

celerymon/event_watcher.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class EventWatcher:
1919
upper_bounds: list[float]
2020
task_names: set[str]
2121
succeeded_task_runtime_sec: list[dict[str, int]]
22+
succeeded_task_runtime_sec_sum: dict[str, float]
2223

2324
@classmethod
2425
def create_started(
@@ -61,6 +62,7 @@ def __init__(
6162
self.last_received_timestamp_per_task_event = dict()
6263
self.num_events_per_task_count = defaultdict(int)
6364
self.succeeded_task_runtime_sec = []
65+
self.succeeded_task_runtime_sec_sum = defaultdict(float)
6466
for _ in range(0, len(self.upper_bounds)):
6567
self.succeeded_task_runtime_sec.append(defaultdict(int))
6668

@@ -84,6 +86,7 @@ def on_event(self, event: dict[str, Any]):
8486
# Not documented, but looking into the Celery codebase, the runtime
8587
# looks like seconds.
8688
runtime_sec = event["runtime"]
89+
self.succeeded_task_runtime_sec_sum[task_name] += runtime_sec
8790
for i, bound in enumerate(self.upper_bounds):
8891
if runtime_sec <= bound:
8992
self.succeeded_task_runtime_sec[i][task_name] += 1

celerymon/metrics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def event_metrics(watcher: EventWatcher) -> list[prometheus_client.Metric]:
155155
success_task_runtime_seconds_metric.add_metric(
156156
labels=[task_name],
157157
buckets=buckets,
158-
sum_value=None,
158+
sum_value=watcher.succeeded_task_runtime_sec_sum[task_name],
159159
timestamp=watcher.last_received_timestamp.timestamp(),
160160
)
161161
return [

0 commit comments

Comments
 (0)