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 jobs_check_heartbeat(job_id): if RedisHeartBeat.job_is_alive(job_id=job_id): return job = get_valid_job(job_id=job_id) if not job: return # Job is zombie status job.set_status(JobLifeCycle.FAILED, message='Job is in zombie state (no heartbeat was reported).')
def test_post_internal_job_heartbeat(self): self.assertEqual(RedisHeartBeat.job_is_alive(self.job.id), False) resp = self.internal_client.post(self.url) assert resp.status_code == status.HTTP_200_OK self.assertEqual(RedisHeartBeat.job_is_alive(self.job.id), True)