示例#1
0
def watch_connections(address, event):
    # Sleep for 4 seconds to ensure that the Python gRPC server has started
    time.sleep(4)

    number_of_failures = 0
    timeout_sec = 1

    while True:
        # If there are three failures, shutdown the gRPC server.
        if number_of_failures == 3:
            event.set()
            break

        channel = grpc.insecure_channel(address)
        try:
            channelz_stub = channelz_pb2_grpc.ChannelzStub(channel)
            # Wait for the channel to be ready.
            grpc.channel_ready_future(channel).result(timeout=timeout_sec)
        except grpc.FutureTimeoutError:
            number_of_failures += 1
            continue
        servers = channelz_stub.GetServers(
            channelz_pb2.GetServersRequest(start_server_id=0))
        sockets = channelz_stub.GetServerSockets(
            channelz_pb2.GetServerSocketsRequest(
                server_id=servers.server[0].ref.server_id, start_socket_id=0))

        # There should be always more than one socket connected to the server
        if len(sockets.socket_ref) == 1:
            number_of_failures += 1
        else:
            number_of_failures = 0

        # Sleep for 2 seconds before polling next time
        time.sleep(2)
示例#2
0
文件: get_stats.py 项目: yishuT/grpc
def run(addr):
    with grpc.insecure_channel(addr) as channel:
        channelz_stub = channelz_pb2_grpc.ChannelzStub(channel)
        # This RPC pulls server-level metrics, like sent/received messages,
        # succeeded/failed RPCs. For more info see:
        # https://github.com/grpc/grpc/blob/master/src/proto/grpc/channelz/channelz.proto
        response = channelz_stub.GetServers(channelz_pb2.GetServersRequest())
        print(f'Info for all servers: {response}')
    async def setUp(self):
        # This server is for Channelz info fetching only
        # It self should not enable Channelz
        self._server = aio.server(options=_DISABLE_REUSE_PORT +
                                  _DISABLE_CHANNELZ)
        port = self._server.add_insecure_port('[::]:0')
        channelz.add_channelz_servicer(self._server)
        await self._server.start()

        # This channel is used to fetch Channelz info only
        # Channelz should not be enabled
        self._channel = aio.insecure_channel('localhost:%d' % port,
                                             options=_DISABLE_CHANNELZ)
        self._channelz_stub = channelz_pb2_grpc.ChannelzStub(self._channel)
示例#4
0
    def setUp(self):
        self._pairs = []
        # This server is for Channelz info fetching only
        # It self should not enable Channelz
        self._server = grpc.server(futures.ThreadPoolExecutor(max_workers=3),
                                   options=_DISABLE_REUSE_PORT +
                                   _DISABLE_CHANNELZ)
        port = self._server.add_insecure_port('[::]:0')
        channelz.add_channelz_servicer(self._server)
        self._server.start()

        # This channel is used to fetch Channelz info only
        # Channelz should not be enabled
        self._channel = grpc.insecure_channel('localhost:%d' % port,
                                              _DISABLE_CHANNELZ)
        self._channelz_stub = channelz_pb2_grpc.ChannelzStub(self._channel)
async def run(addr: str) -> None:
    async with grpc.aio.insecure_channel(addr) as channel:
        channelz_stub = channelz_pb2_grpc.ChannelzStub(channel)
        response = await channelz_stub.GetServers(
            channelz_pb2.GetServersRequest(start_server_id=0))
        print('Info for all servers: %s' % response)
示例#6
0
def run(addr):
    with grpc.insecure_channel(addr) as channel:
        channelz_stub = channelz_pb2_grpc.ChannelzStub(channel)
        response = channelz_stub.GetServers(
            channelz_pb2.GetServersRequest(start_server_id=0))
        print('Info for all servers: %s' % response)
示例#7
0
 def test_has_channelz(self):
     stub = channelz_pb2_grpc.ChannelzStub(self._channel)
     resp = stub.GetTopChannels(channelz_pb2.GetTopChannelsRequest())
     # No exception raised and the response is valid
     self.assertGreater(len(resp.channel), 0)