コード例 #1
0
    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)
コード例 #2
0
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).')