@@ -126,12 +126,18 @@ def list_jobs(self, filters: JobListFilters | None = None) -> tuple[list[JobDeta
126126 if job is None :
127127 continue
128128
129- if filters .function and job .func_name != filters .function :
129+ # Safely get func_name to avoid deserialization errors
130+ try :
131+ job_func_name = job .func_name
132+ except Exception :
133+ job_func_name = "unknown"
134+
135+ if filters .function and job_func_name != filters .function :
130136 continue
131137 if filters .worker and job .worker_name != filters .worker :
132138 continue
133139 if filters .search :
134- search_text = f"{ job . func_name } { job .args } { job .kwargs } " .lower ()
140+ search_text = f"{ job_func_name } { job .args } { job .kwargs } " .lower ()
135141 if filters .search .lower () not in search_text :
136142 continue
137143 if filters .tags and hasattr (job , "meta" ):
@@ -395,10 +401,16 @@ def _map_rq_job_to_schema(self, rq_job: Job, queue_name: str) -> JobDetails:
395401 # Calculate duration from start/end times
396402 duration_seconds = get_duration_seconds (rq_job .started_at , rq_job .ended_at )
397403
404+ # Safely get func_name without triggering deserialization errors
405+ try :
406+ func_name = rq_job .func_name or "unknown"
407+ except Exception :
408+ func_name = "unknown (deserialization error)"
409+
398410 return JobDetails (
399411 id = rq_job .id ,
400412 created_at = ensure_timezone_aware (rq_job .created_at ) or get_timezone_aware_now (),
401- func_name = rq_job . func_name or "unknown" ,
413+ func_name = func_name ,
402414 args = list (rq_job .args ) if rq_job .args else [],
403415 kwargs = dict (rq_job .kwargs ) if rq_job .kwargs else {},
404416 status = status ,
@@ -426,10 +438,12 @@ def _map_rq_job_to_schema(self, rq_job: Job, queue_name: str) -> JobDetails:
426438
427439 except Exception as e :
428440 logger .error (f"Error mapping job { rq_job .id } : { e } " )
441+ # Safely get job ID without triggering deserialization
442+ job_id = getattr (rq_job , 'id' , 'unknown' )
429443 return JobDetails (
430- id = str (getattr ( rq_job , 'id' , 'unknown' )) ,
444+ id = str (job_id ) if job_id else 'unknown' ,
431445 created_at = get_timezone_aware_now (),
432- func_name = str ( getattr ( rq_job , 'func_name' , 'unknown' )) ,
446+ func_name = "unknown (deserialization error)" ,
433447 status = JobStatus .FAILED ,
434448 queue = queue_name ,
435449 )
0 commit comments