def test_redis_heartbeat_experiment(self): heartbeat = RedisHeartBeat(experiment=1) self.assertEqual(heartbeat.redis_key, RedisHeartBeat.KEY_EXPERIMENT.format(1)) self.assertEqual(heartbeat.is_alive(), False) self.assertEqual(RedisHeartBeat.experiment_is_alive(1), False) heartbeat.ping() self.assertEqual(heartbeat.is_alive(), True) self.assertEqual(RedisHeartBeat.experiment_is_alive(1), True) heartbeat.clear() self.assertEqual(heartbeat.is_alive(), False) self.assertEqual(RedisHeartBeat.experiment_is_alive(1), False) RedisHeartBeat.experiment_ping(1) self.assertEqual(heartbeat.is_alive(), True) self.assertEqual(RedisHeartBeat.experiment_is_alive(1), True)
def experiments_check_heartbeat(experiment_id): if RedisHeartBeat.experiment_is_alive(experiment_id=experiment_id): return experiment = get_valid_experiment(experiment_id=experiment_id) if not experiment: return # Experiment is zombie status experiment.set_status(ExperimentLifeCycle.FAILED, message='Experiment is in zombie state (no heartbeat was reported).')