Catch InvalidJobOperation and use as trigger for retry

This commit is contained in:
Brian Tiemann 2024-11-21 10:02:34 -05:00
parent aa9d4a1f1b
commit c14542c8cc

View File

@ -5,7 +5,7 @@ from redis import Redis
from django.test import TestCase from django.test import TestCase
from django.utils import timezone from django.utils import timezone
from django_rq import get_queue from django_rq import get_queue
from rq.job import Job as RQJob from rq.job import Job as RQJob, InvalidJobOperation
from ..jobs import * from ..jobs import *
from core.models import DataSource, Job from core.models import DataSource, Job
@ -127,11 +127,15 @@ class EnqueueTest(JobRunnerTestCase):
redis = Redis() redis = Redis()
job1 = TestJobRunner.enqueue(instance, schedule_at=self.get_schedule_at()) job1 = TestJobRunner.enqueue(instance, schedule_at=self.get_schedule_at())
job1_rq = RQJob.fetch(str(job1.job_id), connection=redis) job1_rq = RQJob.fetch(str(job1.job_id), connection=redis)
job1_status = None
max_sleep = 5 max_sleep = 5
sleep_count = 0 sleep_count = 0
while not job1_rq.get_status() and sleep_count < max_sleep: while job1_status is None and sleep_count < max_sleep:
time.sleep(1) try:
sleep_count += 1 job1_status = job1_rq.get_status()
except InvalidJobOperation:
time.sleep(1)
sleep_count += 1
job2 = TestJobRunner.enqueue_once(instance, schedule_at=self.get_schedule_at(2)) job2 = TestJobRunner.enqueue_once(instance, schedule_at=self.get_schedule_at(2))
self.assertNotEqual(job1, job2) self.assertNotEqual(job1, job2)