@@ -100,7 +100,7 @@ Async gRPC Support
100100++++++++++++++++++
101101
102102The generated code includes `grpclib <https://grpclib.readthedocs.io/en/latest >`_ based
103- stub (client) classes for rpc services declared in the input proto files.
103+ stub (client and server ) classes for rpc services declared in the input proto files.
104104It is enabled by default.
105105
106106
@@ -160,6 +160,36 @@ The generated client can be used like so:
160160 EchoStreamResponse(value = ' hello' )
161161
162162
163+ The server-facing stubs can be used to implement a Python
164+ gRPC server.
165+ To use them, simply subclass the base class in the generated files and override the
166+ service methods:
167+
168+ .. code-block :: python
169+
170+ from echo import EchoBase
171+ from grpclib.server import Server
172+ from typing import AsyncIterator
173+
174+
175+ class EchoService (EchoBase ):
176+ async def echo (self , value : str , extra_times : int ) -> " EchoResponse" :
177+ return value
178+
179+ async def echo_stream (
180+ self , value : str , extra_times : int
181+ ) -> AsyncIterator[" EchoStreamResponse" ]:
182+ for _ in range (extra_times):
183+ yield value
184+
185+
186+ async def start_server ():
187+ HOST = " 127.0.0.1"
188+ PORT = 1337
189+ server = Server([EchoService()])
190+ await server.start(HOST , PORT )
191+ await server.serve_forever()
192+
163193 JSON
164194++++
165195Message objects include :meth: `betterproto.Message.to_json ` and
0 commit comments