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