zerorpc-python官方入门

原文地址:http://www.zerorpc.io/

一个易于使用的,直观的,跨语言的RPC

zerorpc是一个在服务端进程上提供分布式通信的轻量级的、可靠的跨语言的库。它基于ZeroMQMessagePack。提供流式相应(streamed response)——就像python的生成器(generators)——这让zerorpc不仅仅是个典型的RPC引擎。内置心跳包、超时监测以及从失败请求中恢复。自我修复能力、第一类异常以及命令行工具让debug也变得极其简单。

安装

1
pip install zerorpc

HelloWorld

Server.py

1
2
3
4
5
6
7
8
9
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()

Client.py

1
2
3
4
5
import zerorpc

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

流式相应(Streaming Responses)

Server.py

1
2
3
4
5
6
7
8
9
10
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()

Client.py

1
2
3
4
5
6
7
import zerorpc

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

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

第一类异常(First-class exception)

Server.py

1
2
3
4
5
6
7
8
9
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()

Client.py

1
2
3
4
5
6
7
8
9
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

文档

有钱的捧个钱场~