File tree Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -250,13 +250,22 @@ class Meta:
250
250
251
251
def retry_job (self , delay : int | None = None ):
252
252
retry_attempt = self .retry_attempt + 1
253
- job = load_job (self .job_class , self .parameters )
253
+
254
+ try :
255
+ job = load_job (self .job_class , self .parameters )
256
+ class_delay = job .get_retry_delay (retry_attempt )
257
+ except Exception as e :
258
+ # Could fail for various reasons -- most likely with parameters loading (model instance lookup, etc.).
259
+ # Ideally we wouldn't instantiate the job at all here and risk any of the loading stuff at this stage.
260
+ # The .get_retry_delay could maybe be a class method, but it is nice to have access to the instance...
261
+ logger .exception (e )
262
+ class_delay = None
254
263
255
264
if delay is not None :
256
265
# A manual delay set when calling retry_job.
257
266
# Use 0 to retry immediately.
258
267
start_at = timezone .now () + datetime .timedelta (seconds = delay )
259
- elif class_delay := job . get_retry_delay ( retry_attempt ) :
268
+ elif class_delay :
260
269
# Delay based on job class
261
270
start_at = timezone .now () + datetime .timedelta (seconds = class_delay )
262
271
else :
You can’t perform that action at this time.
0 commit comments