当前位置: 首页 > news >正文

律师做网站有用/android优化大师

律师做网站有用,android优化大师,网站卖给做博彩的,租空间做网站首先给出OpenStack的RPC通信的代码调用架构 OpenStack层封装call和cast接口用于远程调用RPC的server上的方法,这些方法都是构造RPC的server的endpoints内的方法。远程调用时,需要提供一个字典对象来指明调用的上下文,调用方法的名字和传递给调…

首先给出OpenStack的RPC通信的代码调用架构

OpenStack消息通信架构图
OpenStack层封装call和cast接口用于远程调用RPC的server上的方法,这些方法都是构造RPC的server的endpoints内的方法。远程调用时,需要提供一个字典对象来指明调用的上下文,调用方法的名字和传递给调用方法的参数(用字典表示)。如:

cctxt =self.client.prepare(vesion=’2.0’)

cctxt.cast(context,‘build_instances’, **kw)

通过cast方式的远程调用,请求发送后就直接返回了(异步);通过call方式远程调用,需要等响应从服务器返回(同步)。

下面我们介绍RPC-server和PRC-client的创建,以及对cast和call的远程调用。

RPC-server.py
fromoslo_config import cfgimportoslo_messagingimporttimeclassServerControlEndpoint(object):target =oslo_messaging.Target(namespace='control',version='2.0')def __init__(self, server):self.server = serverdef stop(self, ctx):print------ServerControlEndpoint. stop --------if self.server:self.server.stop()classTestEndpoint(object):def test(self, ctx, arg):print------ TestEndpoint.test --------return argtransport= oslo_messaging.get_transport(cfg.CONF)#从cfg对象中,读取transport_url,rpc_backend和control_exchange信息构#造Transport对象,其中rpc_backend和control_exchange的默认值分别为:#’rabbit’和’openstack’。target= oslo_messaging.Target(topic='test', server='server1')#在构造RPC-server的target时,需要topic和server参数,exchange参数可#选。endpoints= [ServerControlEndpoint(None),TestEndpoint(),]#一个RPC-server可以暴露多个endpoint,每个endpoint包含一组方法,这组#方法可以被RPC-client通过某种Transport对象远程调用。server= oslo_messaging.get_rpc_server(transport, target, endpoints,executor='blocking')#构造RPC-server对象,其中executor有两种方式:blocking和eventlet。#blocking:用户调用start函数后,在start函数中开始请求处理循环,用户线程#阻塞,处理下一个请求。直到用户调用了stop函数后,这个处理循环才退出。#消息的接受和分发处理都在调用start函数的线程中完成的。#eventlet:在这种方式中,会有一个协程GreenThread来处理消息的接收,然后#有其他不同二屌GreenThread来处理不同消息的分发处理。调用start的用户#线程不会被阻塞。#在这里我们使用blocking方式。
try:server.start()while True:time.sleep(1)exceptKeyboardInterrupt:print("Stopping server")server.stop()server.wait()
RPC-client.py
fromoslo_config import cfgimportoslo_messaging as messagingtransport= messaging.get_transport(cfg.CONF)target= messaging.Target(topic='test')#在构造RPC-client的target时,需要topic参数,其他可选。client= messaging.RPCClient(transport, target)ret= client.call(ctxt = {},method = 'test',arg = 'myarg')#远程调用时,需要提供一个字典对象来指明调用的上下文,调用方法的名字和传#递给调用方法的参数(用字典表示)。cctxt= client.prepare(namespace='control', version='2.0')#prepare函数用于修改RPC-client对象的Target对象的属性。cctxt.cast({},'stop')

由于这里Transport采用rabbit的方式,所以可使用rabbitmqctl命令查询相关信息。此时执行oslo_server.py的进程处于阻塞状态等待消息的到来。

总结:今天主要介绍了RPC-server和RPC-client的构建,其中涉及call和cast接口的使用。OpenStack正是主要通过这两个接口进行远程调用RPC-server上的方法的。后面几篇文章我们将结合OpenStack源码具体分析RPC-server和RPC-client的使用

原文链接:https://blog.csdn.net/gj19890923/article/details/50278669

http://www.lbrq.cn/news/167797.html

相关文章:

  • 加上web.config 网站500/微营销平台
  • 武汉影楼网站建设/推广软件一键发送
  • 做兼职写小说网站/英雄联盟更新公告最新
  • 360怎么变成建设银行首选网站/百度宣传广告要多少钱
  • 专门做代理的网站/北京百度网站排名优化
  • 建站公司的工作流程/百度一下百度首页官网
  • 苏州品牌网站设计/购买一个网站域名需要多少钱
  • 网站中使用特殊字体/找片子有什么好的关键词推荐
  • 58同城本地版下载/佛山seo优化外包
  • 山西省住房和城乡建设厅官方网站/无线网络优化是做什么的
  • 亳州公司做网站/电商项目策划书
  • 百度网站认证/百度 指数
  • 东莞网站建设报价/东莞关键词排名快速优化
  • 成都制作网站公司简介/seo关键词排名优化报价
  • 政府网站建设事例/营销培训方案
  • 手机创建网页/郑州seo公司排名
  • 四川网站建设设计/电脑培训班附近有吗
  • php建网站/百度关键词排名软件
  • 手机网站幻灯片/新手怎么做网络销售
  • 淮北市住房和城乡建设局网站/怎么做好推广
  • 两学一做专题网站用途/竞价外包托管费用
  • 做seo为什么要了解网站/seo推广是做什么的
  • 哈 做网站/搜索引擎营销包括
  • 武汉网站建设的公司/百度推广一年大概需要多少钱
  • 网站开发软件怎么做/地产渠道12种拓客方式
  • 行业网站建设/今日头条收录入口
  • 两个网站合并建设实施方案/免费seo教程
  • 装修素材图片都从什么网站找/怎么自己创建网页
  • 用英文字母做网站关键词/宁德seo培训
  • 成都设计院工资一般多少/上海企业优化
  • 使用 jar -xvf 解压JAR文件无反应怎么办?
  • Python应用指南:使用PyKrige包实现ArcGIS的克里金插值法
  • Linux 进程间通信
  • 区块链之Casper协议背景、演变发展、运作机制和潜在风险
  • 【论文阅读】A Survey on Knowledge-Oriented Retrieval-Augmented Generation(4)
  • 语音增强论文汇总