摘要:是一个超快速的库,最近一直在看的东西,考虑如何应用到公司的项目中,模仿的方式二次封装了一下。示例示例代码在目录启动和原文发布一个基于二次封装的包博客时空路由器
mprpc 是一个超快速的Python RPC 库,最近一直在看 RPC 的东西,考虑如何应用到公司的项目中,模仿 Celery 的方式二次封装了一下。
项目地址: mprpc_config
安装pip install mprpc_config用法
构建一个如下的目录结构
config.py 包含RPC配置属性(任意命名)
INSTALLED_APP 必填参数,list 类型,将每一个包含 RPC 接口的模块名放进去
app_module_name RPC 接口模块(任意命名,可有多个)
implement.py 接口模块(任意命名,可有多个),里面包含 rpc 方法装饰的接口函数
server.py RPC 服务器
初始化 mprpc_config 的 Configration 类,将 config.py 的模块名 config 作为字符串传入
导入 mprpc_config.rpc_server 的 RPCServer 和 StreamServer,启动 RPC 服务器
使用 bind_class 方法将初始化后的所有 RPC 接口绑定给 RPCServer
使用 StreamServer 启动 RPC 服务器
client.py RPC 客户端(测试用,实际可分离)
客户端启动方式可参考 mprpc 。
示例示例代码在 example 目录
server.py
from mprpc_config.rpc_server import RPCServer, StreamServer from mprpc_config import rpc_config if __name__ == "__main__": print("-------start server--------") config = rpc_config.Configuration("config") config.bind_class(RPCServer) server = StreamServer(("127.0.0.1", 6000), RPCServer) server.serve_forever(stop_timeout=10)
client.py
from mprpc_config.rpc_client import RPCClient, RPCPoolClient from mprpc_config.rpc_client import RPCPool print("---------- client ----------") client = RPCClient("127.0.0.1", 6000) print("2 add 4: ", client.call("add", 2, 4)) print("2 plus 4: ", client.call("plus", 2, 4)) print("2 minus 4: ", client.call("minus", 2, 4)) print("---------- done ----------") print("---------- client pool ----------") client_pool = RPCPool(RPCPoolClient, dict(host="127.0.0.1", port=6000)) with client_pool.connection() as client: print("2 add 4: ", client.call("add", 2, 4)) print("2 plus 4: ", client.call("plus", 2, 4)) print("2 minus 4: ", client.call("minus", 2, 4)) print("---------- done ----------")
启动 server 和 client
$ python server.py ---------- server ---------- $ python client.py ---------- client ---------- 2 add 4: 6 2 plus 4: 8 2 minus 4: -2 ---------- done ---------- ---------- client pool ---------- 2 add 4: 6 2 plus 4: 8 2 minus 4: -2 ---------- done ----------
原文:发布一个基于 mprpc_config 二次封装的 pip 包
博客:时空路由器
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44908.html
摘要:项目介绍是一个全新的语言的运行时环境,基于目前最新的进行打造,支持最新的语言规范,同时提供了自己的运行时标准库。同样也在的基础上进行打造,实现了一个除开发之外的一个全新的运行环境。发布核心虚拟机的镜像。整合运行时框架。 showImg(https://segmentfault.com/img/bVbnQXK); polarphp 项目介绍 polarphp是一个全新的PHP语言的运行时...
摘要:做数据分析,,你值得拥有。的包管理器有和,本来是很方便的。另外,本身还提供了包管理器来安装或升级相应的包。八斩刀是咏春中最厉害的兵器,是一条大蟒蛇,翻译为水蟒。如果数据科学是武侠中的咏春,那么便是数据科学中的八斩刀。 摘要:武侠,是成人的童话。江湖,是门派的斗争。数据科学已经开山立派,Python便是其中独领风搔的兵器。如果数据科学是IT武侠中的咏春,那么Anaconda便是数据科学中...
摘要:本文为教程的第二部分,主要以微信控制器群发助手好友删除检测为例演示如何调用微信。教程流程简介这一系列教程从如何分析微信协议开始,第一部分教你如何从零开始获取并模拟扩展个人微信号所需要的协议。 现在的日常生活已经离不开微信,本文将会抛砖引玉演示如何使用Python调用微信API做一些有意思的东西。 看完这一系列教程,你就能从头开始实现自己关于微信的想法。 本文为教程的第二部分,主要以微信...
摘要:三实践案例案例简介分布式系统中,微服务基础组件等,系统中间件,等,对常用功能配置等,进行二次浅封装并统一集成管理,以满足日常开发中基础环境搭建与临时工具的快速实现。 一、背景简介 分布式系统中存在很多拆分的服务,在不断迭代升级的过程中,会出现如下常见的棘手情况: 某个技术组件版本升级,依赖包升级导致部分语法或者API过期,或者组件修复紧急的问题,从而会导致分布式系统下各个服...
摘要:在只有少量服务器的情况下,大多数运维人员会选择手动更新,减少自动化部署发布的开发成本。五自动化部署发布示例简要说明下我们的项目如何使用实现了多个环境的自动化部署发布。 showImg(https://segmentfault.com/img/bVJEL6?w=500&h=250); 一、面临的问题 一个完整的程序开发流程少不了部署发布这个环节,而部署发布是一个重复的过程,最基本的操作包...
阅读 3206·2021-11-10 11:35
阅读 1308·2019-08-30 13:20
阅读 1129·2019-08-29 16:18
阅读 2147·2019-08-26 13:54
阅读 2171·2019-08-26 13:50
阅读 970·2019-08-26 13:39
阅读 2491·2019-08-26 12:08
阅读 1963·2019-08-26 10:37