File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -62,7 +62,7 @@ def run_in_worker(
6262 retries : int | None = None ,
6363 retry_attempt : int = 0 ,
6464 unique_key : str | None = None ,
65- ) -> JobRequest | list [ JobRequest | JobProcess ] :
65+ ) -> JobRequest | None :
6666 from .models import JobRequest
6767
6868 job_class_name = jobs_registry .get_job_class_name (self .__class__ )
@@ -170,8 +170,7 @@ def run_in_worker(
170170 span .set_attribute (ERROR_TYPE , "IntegrityError" )
171171 span .set_status (trace .Status (trace .StatusCode .ERROR , "Duplicate job" ))
172172 logger .warning ("Job already in progress: %s" , e )
173- # Try to return the _in_progress list again
174- return self ._in_progress (unique_key )
173+ return None
175174
176175 def _in_progress (self , unique_key : str ) -> list [JobRequest | JobProcess ]:
177176 """Get all JobRequests and JobProcess that are currently in progress, regardless of queue."""
Original file line number Diff line number Diff line change @@ -412,10 +412,14 @@ class JobResult(models.Model):
412412 ],
413413 )
414414
415- def retry_job (self , delay : int | None = None ) -> JobRequest :
415+ def retry_job (self , delay : int | None = None ) -> JobRequest | None :
416416 retry_attempt = self .retry_attempt + 1
417417 job = jobs_registry .load_job (self .job_class , self .parameters )
418- retry_delay = delay or job .get_retry_delay (retry_attempt )
418+
419+ if delay is None :
420+ retry_delay = job .get_retry_delay (retry_attempt )
421+ else :
422+ retry_delay = delay
419423
420424 with transaction .atomic ():
421425 result = job .run_in_worker (
@@ -427,12 +431,9 @@ def retry_job(self, delay: int | None = None) -> JobRequest:
427431 retry_attempt = retry_attempt ,
428432 # Unique key could be passed also?
429433 )
434+ if result :
435+ self .retry_job_request_uuid = result .uuid
436+ self .save (update_fields = ["retry_job_request_uuid" ])
437+ return result
430438
431- # TODO it is actually possible that result is a list
432- # of pending jobs, which would need to be handled...
433- # Right now it will throw an exception which could be caught by retry_failed_jobs.
434-
435- self .retry_job_request_uuid = result .uuid # type: ignore
436- self .save (update_fields = ["retry_job_request_uuid" ])
437-
438- return result # type: ignore
439+ return None
You can’t perform that action at this time.
0 commit comments