Python gRPC运行状况检查

时间:2019-07-11 08:14:08

标签: grpc grpc-python

我正在尝试学习gRPC,并实现了与tutorial中相同的代码。想知道如何向其中添加gRPC运行状况检查。

偶然发现this,但对如何编写gRPC运行状况检查一无所知。

2 个答案:

答案 0 :(得分:0)

accompanying unit tests是很好的参考。

        def start_server(self, non_blocking=False, thread_pool=None):
            self._thread_pool = thread_pool
            self._servicer = health.HealthServicer(
                experimental_non_blocking=non_blocking,
                experimental_thread_pool=thread_pool)
            self._servicer.set('', health_pb2.HealthCheckResponse.SERVING)
            self._servicer.set(_SERVING_SERVICE,
                               health_pb2.HealthCheckResponse.SERVING)
            self._servicer.set(_UNKNOWN_SERVICE,
                               health_pb2.HealthCheckResponse.UNKNOWN)
            self._servicer.set(_NOT_SERVING_SERVICE,
                               health_pb2.HealthCheckResponse.NOT_SERVING)
            self._server = test_common.test_server()
            port = self._server.add_insecure_port('[::]:0')
            health_pb2_grpc.add_HealthServicer_to_server(
                self._servicer, self._server)
            self._server.start()

在应用程序服务器的主服务程序类中保留对运行状况服务程序的引用。然后,在适当的时间,例如,在其上调用set()方法启动完成时或进入无法处理请求的状态时。但是请注意,这利用了一些实验性功能,以确保所附加的健康服务程序不会导致应用程序级请求被饿死。

答案 1 :(得分:0)

我发现此示例非常有用: https://github.com/grpc/grpc/tree/master/examples/python/xds

具体地说,server.py提供了运行状况检查和反射的实现。