使用oslo相关模块构造rpc server及client代码样例
来源:互联网 发布:js display none 编辑:程序博客网 时间:2024/05/20 17:27
前提条件:rabbitmq服务启动、oslo相关模块已安装、 /etc/test/test.conf文件存在且配置了rabbitmq相关的配置项
主要配置项如下:
rabbit_host=127.0.0.1
rabbit_userid=test
rabbit_password=123456
rpc server端代码如下:
import oslo_messaging as messaging
from oslo_config import cfg
from oslo_service import service
CONF = cfg.CONF
TRANSPORT = None
CONF(None, project='test')
TRANSPORT = messaging.get_transport(CONF)class WorkerManager(object): target = messaging.Target(version='1.0') def __init__(self, host=None): self.host = hostdef test_get(self, context, get_id):
print "test_get method is called"class Service(service.Service):def __init__(self, host, binary, topic, manager=None, *args, **kwargs):super(Service, self).__init__()
self.host = host
self.binary = binary
self.topic = topic
self.manager = WorkerManager(host=self.host)self.rpcserver = None
def start(self):target = messaging.Target(topic=self.topic, server=self.host)
endpoints = [self.manager]
self.rpcserver = messaging.get_rpc_server(TRANSPORT, target, endpoints) self.rpcserver.start() def __getattr__(self, key): manager = self.__dict__.get('manager', None) return getattr(manager, key) def kill(self): self.stop() def stop(self, graceful=False): try: self.rpcserver.stop() self.rpcserver.wait() except Exception: pass super(Service, self).stop() def reset(self): """Reset a service in case it received a SIGHUP.""" passserver=Service(host='testHostname', binary='test-bin', topic='test')_launcher = service.launch(CONF, server, workers=1)_launcher.wait()rpc client端代码如下:
import oslo_messaging as messaging
from oslo_config import cfg
CONF = cfg.CONF
CONF(None, project='test')
TRANSPORT = None
TRANSPORT = messaging.get_transport(CONF)
class RpcApi(object):
def __init__(self):
target = messaging.Target(topic='test', version='1.0')
self.client = messaging.RPCClient(TRANSPORT, target)
def test_get(self, ctxt, get_id):
version = '1.0'
cctxt = self.client.prepare(version=version)
return cctxt.cast(ctxt, 'test_get', get_id=get_id)
rpc_api=RpcApi()
rpc_api.test_get({},'aaaa')
0 0
- 使用oslo相关模块构造rpc server及client代码样例
- 使用oslo模块编写的rpc server无法消费消息问题
- oslo.config模块的使用
- RPC in oslo.messaging
- OpenERP源码结构分析及RPC相关代码分布
- Openstack oslo.message rpc简介
- UDP server,client 代码
- ZooKeeper Server/Client Session 设计及代码分析
- MFC socket 使用GetAddrInfo 相关代码 client端
- 内核编译及模块相关命令使用
- openstack oslo代码分析
- linux下ftp的server/client的部署及使用
- OpenStack oslo.messaging使用
- 为什么openstack中的oslo模块总喜欢发生代码冲突? (by quqi99)
- Using Async RPC with Your Client/Server Applications
- MM模块操作流程及相关建议代码
- 使用oslo.config模块不能正确获取配置项值的问题排查
- 线程的使用及相关代码
- 插入排序
- MySQL5.5.21安装图解教程
- Junit在Spring中测试
- 洛谷P1850 [NOIP2016]换教室
- android 学习记录
- 使用oslo相关模块构造rpc server及client代码样例
- 使用matlab做海岸类型分析(一)之基础篇
- 微服务(Microservice)那点事
- Android使用ShareSDK集成QQ、微信、微博等第三方登录
- Android之使用传感器获取相应数据
- [leetcode]Rotate Array(using Python)
- js学习记录6
- oracle数据库突然无法链接
- A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval笔记