Will Dx

人世一身霜雪, 归来仍是少年.

Zerorpc使用

Posted April 07, 2017

官方文档

1. 安装

Python
pip install zerorpc

2. 简单输出Hello World例子

Python
# vim server.py
import zerorpc

class HelloRPC(object):
    def hello(self, name):
        return "Hello, %s" % name

s = zerorpc.Server(HelloRPC())
s.bind("tcp://0.0.0.0:4242")
s.run()
Python
# vim client.py

import zerorpc

c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")
print c.hello("RPC")

3. 流式响应(Streaming Responses)

Python
# vim server.py

import zerorpc

class StreamingRPC(object):
    @zerorpc.stream
    def streaming_range(self, fr, to, step):
        return xrange(fr, to, step)

s = zerorpc.Server(StreamingRPC())
s.bind("tcp://0.0.0.0:4242")
s.run()
Python
# vim client.py
import zerorpc

c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")

for item in c.streaming_range(10, 20, 2):
    print item

4. 异常处理

Python
# vim server.py

import zerorpc

class ExceptionalRPC(object):
    def bad(self):
        raise Exception(":P")

s = zerorpc.Server(ExceptionalRPC())
s.bind("tcp://0.0.0.0:4242")
s.run()
Python
# vim client.py

import zerorpc

c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")

try:
    c.bad()
except Exception, e:
    print "An error occurred: %s" % e

5. 总结

  1. server端通过zerorpc.Server的方式提供服务, 绑定一个TCP链接
  2. client端通过zerorpc.Client的方式调用服务端函数
  3. 可以将业务代码函数异常处理函数放到同一个类进行管理, 在client端调用业务代码函数, 当出现异常调用同时定义好的异常处理函数