所谓RPC,是远程过程调用(Remote Procedure Call)的简写,网上解释很多,简单来说,就是在当前进程调用其他进程的函数时,体验就像是调用本地写的函数一般。
本文实现的是在本地调用远端的类class对象的接口,也就是本地的client不实例化类对象,调用的是server端的类对象接口。
为了达到让调用层无须关心底层实现,拥有丝滑般的体验,就需要以下几个部分:

客户端需要把类的接口提取出来,并将调用函数事件捕获存储起来;服务端需要把类的公有函数作为可远程调用的接口。
客户端把调用函数的事件(调用的函数,参数)进行序列化并发送给服务端;服务端将客户端的调用事件反序列化,并执行相应的接口,将返回值发送给客户端。
客户端与服务端通过某种方式(一般就是网络socket)进行通信。

1 .安装  thriftpy2

pip3 install thriftpy2

2.服务端  server.pys

import thriftpy2
from thriftpy2.rpc import make_server pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift") class Dispatcher(object):
def ping(self):
return "pong" server = make_server(pingpong_thrift.PingPong,Dispatcher(),"127.0.0.1",6000)
server.serve()

 3.pingpong.thrit

service PingPong{
string ping(),
}

  4.client.py

import thriftpy2

pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")

from thriftpy2.rpc import make_client

client = make_client(pingpong_thrift.PingPong, '127.0.0.1', 6000)
print(client.ping())

  

启动server.py,运行client.py后即可查看到服务端函数的结果。

最新文章

  1. Java进击C#——应用开发之Asp.net MVC
  2. insert into output使用
  3. Java开发中经典的小实例-(swich(){case:参数break;default: break;})
  4. ✡ leetcode 167. Two Sum II - Input array is sorted 求两数相加等于一个数的位置 --------- java
  5. 【Android开发学习笔记】【第七课】五大布局-上
  6. LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
  7. ssh远程执行命令并自动退出(已测试通过)
  8. C#创建自定义配置节点
  9. 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
  10. Broadcast详解
  11. PPK提供的浏览器类型及版本检测方法
  12. 【转】mysql索引使用技巧及注意事项
  13. gradle 编译 "aapt.exe'' finished with non-zero exit value 1 问题
  14. 图解HTTP第六章
  15. 编译安装centos6.9 php7.0 mysql5.6 nginx1.8
  16. 根据题目完成以下50道SQL语句
  17. Mac下一款门罗币挖矿木马的简要分析
  18. python-day36--并发编程之多线程
  19. 微信获取openId
  20. VS2017中对C++的单元测试

热门文章

  1. rabbitmq五种模式详解(含实现代码)
  2. 图解高性能网络架构:Reactor 和 Proactor
  3. 488. Zuma Game
  4. 去css 冗余方法
  5. <JVM下篇:性能监控与调优篇>补充:使用OQL语言查询对象信息
  6. mysql 的查询操作语句---自动生成各种不同的序号
  7. 手写一个最简单的IOC容器,从而了解spring的核心原理
  8. OO_Unit2_多线程电梯
  9. 聊一聊 JVM 的 GC
  10. [时间模块、random模块]