Fix readme docs 'Async gRPC Support' (#249)
This commit is contained in:
parent
02e41afd09
commit
a33126544b
29
README.md
29
README.md
@ -160,6 +160,12 @@ service Echo {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Generate echo proto file:
|
||||||
|
|
||||||
|
```
|
||||||
|
python -m grpc_tools.protoc -I . --python_betterproto_out=. echo.proto
|
||||||
|
```
|
||||||
|
|
||||||
A client can be implemented as follows:
|
A client can be implemented as follows:
|
||||||
```python
|
```python
|
||||||
import asyncio
|
import asyncio
|
||||||
@ -199,28 +205,29 @@ To use them, simply subclass the base class in the generated files and override
|
|||||||
service methods:
|
service methods:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from echo import EchoBase
|
import asyncio
|
||||||
|
from echo import EchoBase, EchoResponse, EchoStreamResponse
|
||||||
from grpclib.server import Server
|
from grpclib.server import Server
|
||||||
from typing import AsyncIterator
|
from typing import AsyncIterator
|
||||||
|
|
||||||
|
|
||||||
class EchoService(EchoBase):
|
class EchoService(EchoBase):
|
||||||
async def echo(self, value: str, extra_times: int) -> "EchoResponse":
|
async def echo(self, value: str, extra_times: int) -> "EchoResponse":
|
||||||
return value
|
return EchoResponse([value for _ in range(extra_times)])
|
||||||
|
|
||||||
async def echo_stream(
|
async def echo_stream(self, value: str, extra_times: int) -> AsyncIterator["EchoStreamResponse"]:
|
||||||
self, value: str, extra_times: int
|
|
||||||
) -> AsyncIterator["EchoStreamResponse"]:
|
|
||||||
for _ in range(extra_times):
|
for _ in range(extra_times):
|
||||||
yield value
|
yield EchoStreamResponse(value)
|
||||||
|
|
||||||
|
|
||||||
async def start_server():
|
async def main():
|
||||||
HOST = "127.0.0.1"
|
|
||||||
PORT = 1337
|
|
||||||
server = Server([EchoService()])
|
server = Server([EchoService()])
|
||||||
await server.start(HOST, PORT)
|
await server.start("127.0.0.1", 50051)
|
||||||
await server.serve_forever()
|
await server.wait_closed()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
loop.run_until_complete(main())
|
||||||
```
|
```
|
||||||
|
|
||||||
### JSON
|
### JSON
|
||||||
|
Loading…
x
Reference in New Issue
Block a user