我正在尝试学习 gRPC 并实现与教程中相同的代码。想知道如何向它添加 gRPC 健康检查。
偶然发现了这个,但对如何编写 gRPC 健康检查一无所知。
随附的单元测试可以作为很好的参考。
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()
它的方法,例如,当启动完成时或当它进入无法服务器请求的状态时。但是请注意,这利用了一些实验性功能,以确保附加的健康服务程序不会导致应用程序级请求被饿死。
我发现这个例子真的很有帮助: https ://github.com/grpc/grpc/tree/master/examples/python/xds
具体来说,server.py
提供了健康检查和反射的实现。