Beispiel #1
0
    def keep_device_heart(device_code):
        # 先获得心跳的主键
        device_heart_key = RedisClient.get_device_heart_key(device_code)

        redis_device_client.setex(device_heart_key,
                                  DEFAULT_EXPIRED_DEVICE_HEART,
                                  int(time.time()))
Beispiel #2
0
    def get_device_alive_status(device):

        if isinstance(device, basestring):
            device_code = device
        elif isinstance(device, Device):
            device_code = device.device_code
        else:
            log.error("当前设备参数获取存活状态不正确: device = {} type = {}".format(
                device, type(device)))
            return Device.ALIVE_OFFLINE

        # 先获得心跳的主键
        device_heart_key = RedisClient.get_device_heart_key(device_code)
        last_heart_time = redis_device_client.get(device_heart_key)
        if last_heart_time is None:
            return Device.ALIVE_OFFLINE

        return Device.ALIVE_ONLINE
Beispiel #3
0
    def delete_device(device_id):

        device = DeviceService.get_device_by_id(device_id)

        if device is None:
            log.warn("当前需要删除的设备不存在: device_id = {}".format(device_id))
            return False

        # 当前设备在线,且设备正在被用户使用,则不能够删除
        if DeviceService.get_device_alive_status(device) == Device.ALIVE_ONLINE and \
                        DeviceService.get_device_status(device) != DeviceStatus.STATUE_FREE:
            log.warn("当前设备不处于空闲状态,不能删除: device_id = {}".format(device.id))
            return False

        # 删除设备状态缓存信息
        device_status_key = RedisClient.get_device_status_key(
            device.device_code)
        redis_device_client.delete(device_status_key)

        # 删除设备更新状态缓存
        device_update_status_key = RedisClient.get_device_update_status_key(
            device.device_code)
        redis_device_client.delete(device_update_status_key)

        # 删除设备心跳缓存
        device_heart_key = RedisClient.get_device_heart_key(device.device_code)
        redis_device_client.delete(device_heart_key)

        # 删除设备上的游戏
        DeviceGameService.delete_deploy_device_game(device.id)

        if not device.delete():
            log.warn("设备信息删除失败: {}".format(
                json.dumps(device.to_dict(), ensure_ascii=False)))
            return False
        return True