diff --git a/CHANGELOG.md b/CHANGELOG.md index 86ba007f..83cedf17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,15 @@ # CHANGELOG -## [Unreleased] - 2022-10-25 +## [Unreleased] - 2023-08-21 +### Added +- Support grpc reflection +## [3.1.0] - 2022-11-10 ### Changed - Upgrade depebdebcies to support python 3.10+ - Changed CI from Travis CI to Github Actions ## [3.0.0] - 2022-06-24 - ### Added - Added multiprocessing worker class ### Changed diff --git a/requirements.txt b/requirements.txt index 435170c8..33aef385 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ grpcio>=1.27.0,<1.49.0 grpcio-tools>=1.27.0,<1.49.0 +grpcio-reflection protobuf<4.0.0 pendulum blinker diff --git a/sea/server/multiprocessing.py b/sea/server/multiprocessing.py index 7d125f9c..7b491b39 100644 --- a/sea/server/multiprocessing.py +++ b/sea/server/multiprocessing.py @@ -9,6 +9,7 @@ from typing import List import grpc +from grpc_reflection.v1alpha import reflection from sea import signals @@ -45,6 +46,9 @@ def _run_server(self, bind_address): ], ) self.server = server # set server in slave process + # register reflection service + if self.app.config.get("GRPC_REFLECTION_SERVICES"): + reflection.enable_server_reflection((reflection.SERVICE_NAME, *self.app.config["GRPC_REFLECTION_SERVICES"]), self.server) for _, (add_func, servicer) in self.app.servicers.items(): add_func(servicer(), server) diff --git a/sea/server/threading.py b/sea/server/threading.py index 820e070b..4fa29b58 100644 --- a/sea/server/threading.py +++ b/sea/server/threading.py @@ -3,6 +3,7 @@ from concurrent import futures import grpc +from grpc_reflection.v1alpha import reflection from sea import signals @@ -28,6 +29,9 @@ def run(self): from prometheus_client import start_http_server start_http_server(self.app.config["PROMETHEUS_PORT"]) + # register reflection service + if self.app.config.get("GRPC_REFLECTION_SERVICES"): + reflection.enable_server_reflection((reflection.SERVICE_NAME, *self.app.config["GRPC_REFLECTION_SERVICES"]), self.server) # run grpc server for name, (add_func, servicer) in self.app.servicers.items(): add_func(servicer(), self.server) diff --git a/tests/wd/configs/default/__init__.py b/tests/wd/configs/default/__init__.py index f74b4f85..63f3d642 100644 --- a/tests/wd/configs/default/__init__.py +++ b/tests/wd/configs/default/__init__.py @@ -14,4 +14,5 @@ TIMEZONE = "Asia/Shanghai" GRPC_GRACE = 0 +GRPC_REFLECTION_SERVICES = ["helloworld.Greeter"] PROMETHEUS_SCRAPE = True