从python中检查aerospeke集是否为空的最简单方法是什么?

2024-04-25 10:09:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python client中没有看到检查给定集是否为空的方法。你知道吗

作为命令行中的文档says,我可以使用:

asinfo -h <host> -v 'sets/<namespace>/<set>'

但它只适用于单个主机。你知道吗

另一种方法是查看输出:

asadm -h <host> -e 'info set'

您将如何在Python中实现这样一个方法?你知道吗


Tags: 方法命令行文档infoclienthostsetsnamespace
2条回答

下面是我的python实现:

def _info_result_prop_value(info_result, prop_name, default):
    result_split = info_result.split(':')
    return next((s.strip().split('=', 2)[1] for s in result_split
                 if s.strip().startswith(f'{prop_name}=')), default)


def count_objects(client, ns, set_name):
    count = 0
    for info_result in client.info_all(f"sets/{ns}/{set_name}").values():
        count += int(_info_result_prop_value(info_result[1], 'objects', '0'))
    return count


def is_empty_set(client, ns, set_name):
    return count_objects(client, ns, set_name) == 0

在客户机中使用“info”API:https://www.aerospike.com/apidocs/python/client.html#aerospike.Client.info_all

client.info_all("sets/<namespace>/<set>")

然后把你感兴趣的数据加起来。你知道吗

相关问题 更多 >