通常情况下,Zerorpc 只能初始化一个类,要是有一些任务场景,需要按资源或多个类初始化呢?

从zerorpc的源码core.py 74-82行可以看出, 如果methods是dict对象,直接返回;如果是类名,则转化成dict。 所以我们可以直接初始化成dict,而dict是支持n个。

我们可以依葫芦画瓢,在server端可以这样现实:

import zerorpc

_method = {}

def register(cls):

obj = cls()

prefix = cls.__name__

_method.update({'{}:{}'.format(prefix, k): getattr(obj, k)

for k in dir(obj)

if not k.startswith('_') and callable(getattr(obj, k))})

return cls

@register

class RpcServer1:

def add(self, x, y):

return x+y

@register

class RpcServer2:

def add(self, x, y):

return x*y

server = zerorpc.Server(_method, heartbeat=20)

server.bind("tcp://{0}:{1}".format('127.0.0.1', 4242))

server.run()

我们定义了两个类,分别使用了register装饰器(把每个类存入字典),然后在实例化rpc server的时候传入定义好的字典即可。

下面是客户端调用:

import zerorpc

class Client(zerorpc.Client):

def __init__(self, *arg, **kwargs):

self._prefix = kwargs.pop("prefix", "")

super(Client, self).__init__(*arg, **kwargs)

def set_prefix(self, prefix):

self._prefix = prefix

def __getattr__(self, method):

method = ":".join([self._prefix, method]) if self._prefix else method

return lambda *args, **kwargs: self(method, *args, **kwargs)

if __name__ == "__main__":

c1 = Client(prefix="RpcServer1")

c1.connect('tcp://127.0.0.1:4242')

c2 = Client(prefix="RpcServer2")

c2.connect('tcp://127.0.0.1:4242')

print(c1.add(5,5))

print(c2.add(5,5))

zerorpc java_Zerorpc 支持暴露多个远程Api接口类相关推荐

  1. 新网域名查询和注册API接口类 源码

    最近公司要做一个基于新网的API,在自己的系统中实现实时查询域名注册情况,并且要能实时注册,注册费用自动从我们的代理帐户中扣除,下面是我写的核心实现类代码:     public class XinN ...

  2. 新网域名查询和注册API接口类

    public class XinNetApiBase { //默认代理编号 public readonly static string AgentID = "agent88888" ...

  3. API接口安全—webservice、Swagger、WEBpack

    API接口安全-webservice.Swagger.WEBpack 1. API接口介绍 1.1. 常用的API接口类 1.1.1. API接口分类 1.1.1.1. 类库型API 1.1.1.2. ...

  4. api服务器开发语言,【API编写】介绍一个国内强大的API接口文档写作网站showdoc - 最好的编程语言 - 博客园...

    这几天要写一个接口API文档,经理给我发过来一个,说要弄一个这样的接口文档,我一看,这可麻烦呀,有大纲有详细,我以为要用div+css去一个页面一个页面做呢,这工作量可不小,网站一搜索,竟然有可以直接 ...

  5. html5视频常用API接口

    一.虽然有的属性是boolean类型,但仍旧建议按照XHTML书写(属性名="属性值")格式,避免出现错误 (下面加粗的属性为常用属性) 属性 值 功能描述 controls co ...

  6. php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

    2016年12月29日13:45:27  关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是restf ...

  7. 有赞API接口 SDK 的开发经历

    刚开始对接有赞API的时候遇到了一些奇怪的疑问. 有赞没有完整JAVA的示例,不出现类似其他开发平台中的demo示例文件参考,唯一的示例代码出现在页面上. 这增加了开发难度,需要花点时间去理解. 我在 ...

  8. Confluence 6 启用远程 API

    XML-RPC 和 SOAP 远程 API 从 Confluence 5.5 开始已经废弃了.我们推荐你使用完全支持的 Confluence Server REST API. 希望启用 XML-RPC ...

  9. 青柠网络验证远程api使用方法

    青柠网络验证2.0 vip版增加远程api功能,只要发条JS调试工具(请自行百度这个工具)能运行的js,在远程api里都可以运行. 功能暂时是试运行,如果使用过程中遇到问题,请联系群主. 注意以下事项 ...

  10. jenkins_使用Jenkins / Hudson远程API检查作业状态

    jenkins 在进行演讲时,我编写了一个Hudson / Jenkins插件(适用于EclipseCon NA 2014) ,但我想发表有关该演讲中提到的想法的博客文章. 在这篇文章中,我解释了如何 ...

最新文章

  1. 设计模式之间可以相互功能替换吗?
  2. python wxpy_wxpy
  3. Vscode Python输出窗口中文乱码的解决办法
  4. 【maven插件】maven-resources-plugin
  5. linux db2创建存储过程语法,EF基础一-db2存储过程中循环语句while do...-oracle 创建DBLINK_169IT.COM...
  6. c语言字符指针清零,C语言中字符串的内存地址操作的相关函数简介
  7. 支付宝「集五福」的阳谋
  8. 通过C#查询SQLServer数据库超时
  9. OpenGL超级宝典(第7版)笔记18 位移、旋转、缩放、观察、透视矩阵 代码实现
  10. 菜刀之中国蚁剑-安装使用及下载地址
  11. pip问题集锦(pip是干什么的,pip安装速度过慢怎么办,--user是什么意思?)
  12. Bmob后端云(云数据库表的具体操作)
  13. Odoo与浪潮合资研发PS Cloud之在Odoo发送和接收电子邮件
  14. BUUCTF RE [SUCTF2019] SignIn
  15. 一张小名片引发的地球大危机
  16. 阿里巴巴融资破17亿美金创纪录
  17. 视频去水印工具哪个好用
  18. 黄药师遥祭衡卿文!-悲哉千古!
  19. FPGA之流水线算法
  20. Arcgis操作:网格划分

热门文章

  1. python 操作access数据库
  2. vector向量容器的一些基本操作
  3. c++线程间通信的几种方法_JAVA并发之线程amp;进程
  4. 16年10月计算机组成原理,福建师范大学16年8月课程考试《计算机组成原理》作业考核试题.doc...
  5. html修改列表内的audio样式,如何修改H5中的audio样式
  6. python中dtype与dtypes区别
  7. CopyQq program山寨QQ项目
  8. 遗传算法的原理与python实现
  9. 配置pytoch版人脸关键点网络pfld docker环境
  10. word图表自动编号