大家都已经很熟悉了RPC了。 比如说nfs就是采用的RPC通信。
尤其SUN RPC 已经成为了C语言开发的经典一种进程间调用机制。
openstack 的RPC 机制, 是基于AMQP 活着其他高级消息协议而实现得远程调用机制。
而oslo.messaging 在这些消息协议基础上实现了很nice的接口。developer 可以很方便的调用。
参考 openstack的developer手册,实现一个RPC 的server端。
http://docs.openstack.org/developer/oslo.messaging/server.html
call_server.py
1 from oslo_config import cfg 2 import oslo_messaging 3 4 class ServerControlEndpoint(object): 5 6 target = oslo_messaging.Target(namespace='control', 7 version='2.0') 8 9 def __init__(self, server): 10 print "this is ServerControlEndpoint" 11 self.server = server 12 13 def stop(self, ctx): 14 if server: 15 self.server.stop() 16 17 class TestEndpoint(object): 18 19 def test(self, ctx, arg): 20 print "this is TestEndpoint test server" 21 return arg 22 23 transport = oslo_messaging.get_transport(cfg.CONF) 24 25 print "cfg.CONF: ", cfg.CONF 26 print "transport: ", transport 27 target = oslo_messaging.Target(topic='test', server='server1') 28 print "target: ", target 29 endpoints = [ 30 ServerControlEndpoint(None), 31 TestEndpoint(), 32 ] 33 server = oslo_messaging.get_rpc_server(transport, target, endpoints, 34 executor='blocking') 35 print "server: ", server 36 server.start() 37 server.wait()