获取python中已注册的gRPC服务名称和方法的列表

获取python中已注册的gRPC服务名称和方法的列表,python,grpc,meta,Python,Grpc,Meta,GRPCCoreforJava可以选择从GRPCServer对象获取服务描述符列表。我们可以从中收集服务名称和方法名称 for (ServerServiceDefinition serverServiceDefinition: server.getServices()) { ServiceDescriptor serviceDescriptor = serverServiceDefinition.getServiceDescriptor(); Collec

GRPCCoreforJava可以选择从GRPCServer对象获取服务描述符列表。我们可以从中收集服务名称和方法名称

    for (ServerServiceDefinition serverServiceDefinition: server.getServices()) {
        ServiceDescriptor serviceDescriptor = serverServiceDefinition.getServiceDescriptor();
        Collection<MethodDescriptor<?, ?>> methods = serviceDescriptor.getMethods();
        LOG.info("Service Name: {}", serviceDescriptor.getName());
        for (MethodDescriptor<?, ?> methodDescriptor : methods) {
            LOG.info("\t{}", methodDescriptor.getFullMethodName());
        }
    }

如果我正确理解了您的需求,下面的代码片段可能会对您有所帮助

#服务器是已配置的grpc服务器对象。
对于服务器中的服务。\u state.generic\u处理程序:
打印(“服务名称:”,Service.Service\u Name())
对于服务中的方法。\u方法\u处理程序:
打印(4*“”+方法)
如果您不想要该方法的全名,请使用以下命令:

method.split('/')[-1]

我不完全理解你到底想要什么。你能添加一个你希望它能工作的片段吗?当然-我添加了一个例子。
    import service_pb2

    a = service_pb2._<service_name>
    print(a.name)
    for m in a.methods:
        print(f'\t{m.name}')
Server Name: ServiceName1
    serviceMethod1
    serviceMethod2
    serviceMethod3
    serviceMethod4
Server Name: ServiceName2
    serviceMethod1
    serviceMethod2
    serviceMethod3
Server Name: ServiceName3
    serviceMethod1
    serviceMethod2