aboutsummaryrefslogtreecommitdiff
path: root/uploader/jobs.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/jobs.py')
-rw-r--r--uploader/jobs.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/uploader/jobs.py b/uploader/jobs.py
index ff6a3c7..270028a 100644
--- a/uploader/jobs.py
+++ b/uploader/jobs.py
@@ -10,6 +10,7 @@ from datetime import timedelta
from typing import Union, Optional
from redis import Redis
+from functional_tools import take
from flask import current_app as app
JOBS_PREFIX = "jobs"
@@ -132,9 +133,16 @@ def update_stdout_stderr(rconn: Redis,
rconn.hset(name=job_key(rprefix, jobid), key=stream, value=new_contents)
-def job_errors(rconn: Redis, prefix: str, job_id: Union[str, uuid.UUID]) -> tuple[dict, ...]:
+def job_errors(
+ rconn: Redis,
+ prefix: str,
+ job_id: Union[str, uuid.UUID],
+ count: int = 100
+) -> tuple[dict, ...]:
"""Fetch job errors"""
- return tuple(
- json.loads(error)
- for key in rconn.keys(f"{prefix}:{str(job_id)}:*:errors:*")
- for error in rconn.lrange(key, 0, -1))
+ return take(
+ (
+ json.loads(error)
+ for key in rconn.keys(f"{prefix}:{str(job_id)}:*:errors:*")
+ for error in rconn.lrange(key, 0, -1)),
+ count)