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)
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)
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)
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)
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)