https://github.com/laiyongtao/zk_grpc
a zookeeper registration center manager for python grpcio
https://github.com/laiyongtao/zk_grpc
Last synced: 2 months ago
JSON representation
a zookeeper registration center manager for python grpcio
- Host: GitHub
- URL: https://github.com/laiyongtao/zk_grpc
- Owner: laiyongtao
- License: mit
- Created: 2020-08-18T14:38:13.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-10-11T04:54:15.000Z (over 4 years ago)
- Last Synced: 2025-03-25T19:13:19.852Z (3 months ago)
- Language: Python
- Size: 47.9 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# zk_grpc
a zookeeper registration center manager for python grpcioRequires: Python 3.5, grpcio, kazoo
### install
```shell
pip install zk-grpc
```
####How to update 0.0.1 to 0.1.0
```text
1. Update the Client server which use with ZKGrpc or AIOZKGrpc to v0.1.0 zk-grpc first.
2. Then update the server which use with ZKRegister or AIOZKRegister.
```
**Notice: Can not use V0.0.1 ZKGrpc class with v0.1.0 ZKRegister class**##### [More Eaxmples](https://github.com/laiyongtao/zk_grpc/tree/master/example)
## Service Register
```python
import signal
from example_pb2 import HelloRequest, HelloResponse
from example_pb2_grpc import HelloServiceServicer, add_HelloServiceServicer_to_serverfrom kazoo.client import KazooClient
from zk_grpc import ZKRegisterclass HelloService(HelloServiceServicer):
def hello_world(self, request: HelloRequest, context):
hello = request.hello
return HelloResponse(hello=hello)def run(host, port):
from grpc import server
from concurrent.futures import ThreadPoolExecutorserver = server(ThreadPoolExecutor(50))
add_HelloServiceServicer_to_server(HelloService(), server)server.add_insecure_port("{}:{}".format(host, port))
server.start()kz = KazooClient(hosts="127.0.0.1:2181")
kz.start()zk_register = ZKRegister(kz_client=kz)
# register all servicers on gprc server obj, do not support aio grpc server
zk_register.register_grpc_server(server, host, port)
# or register servicer one by one
# zk_register.register_server(HelloServiceServicer, host, port)def shutdown(*args, **kwargs):
zk_register.stop()
# close kazoo client after zk_register stoped
kz.stop()
kz.close()server.stop(0.5)
signal.signal(signal.SIGTERM, shutdown)
try:
server.wait_for_termination()
except KeyboardInterrupt:
shutdown()if __name__ == '__main__':
host = "127.0.0.1"
port = 50052
run(host, port)
```
## Service Discovery
```python
from example_pb2 import HelloRequest
from example_pb2_grpc import HelloServiceStub
from kazoo.client import KazooClient
from zk_grpc import ZKGrpcdef run():
# before useing
kz = KazooClient(hosts="127.0.0.1:2181")
kz.start()zk_g = ZKGrpc(kz_client=kz)
# get stub
stub = zk_g.wrap_stub(HelloServiceStub)# call grpc api
resp = stub.hello_world(HelloRequest(hello="hello"))
print(resp.hello)# before exit
zk_g.stop()
kz.stop()
kz.close()if __name__ == '__main__':
run()
```