def test_jobs_check_heartbeat(self): job1 = JobFactory() JobStatusFactory(job=job1, status=JobLifeCycle.RUNNING) RedisHeartBeat.job_ping(job_id=job1.id) job2 = JobFactory() JobStatusFactory(job=job2, status=JobLifeCycle.RUNNING) jobs_check_heartbeat(job1.id) job1.refresh_from_db() self.assertEqual(job1.last_status, JobLifeCycle.RUNNING) jobs_check_heartbeat(job2.id) job2.refresh_from_db() self.assertEqual(job2.last_status, JobLifeCycle.FAILED)
def test_redis_heartbeat_job(self): heartbeat = RedisHeartBeat(job=1) self.assertEqual(heartbeat.redis_key, RedisHeartBeat.KEY_JOB.format(1)) self.assertEqual(heartbeat.is_alive(), False) self.assertEqual(RedisHeartBeat.job_is_alive(1), False) heartbeat.ping() self.assertEqual(heartbeat.is_alive(), True) self.assertEqual(RedisHeartBeat.job_is_alive(1), True) heartbeat.clear() self.assertEqual(heartbeat.is_alive(), False) self.assertEqual(RedisHeartBeat.job_is_alive(1), False) RedisHeartBeat.job_ping(1) self.assertEqual(heartbeat.is_alive(), True) self.assertEqual(RedisHeartBeat.job_is_alive(1), True)
def post(self, request, *args, **kwargs): RedisHeartBeat.job_ping(job_id=self.job.id) return Response(status=status.HTTP_200_OK)
def _ping_heartbeat(self) -> None: RedisHeartBeat.job_ping(self.id)