服务器

Thrift提供的常见服务端类型有一下几种:

  • thrift.server.TServer.TSimpleServer 单线程服务器
  • thrift.server.TServer.TThreadedServer 多线程服务器
  • thrift.server.TServer.TThreadPoolServer 线程池服务器
  • thrift.server.TServer.TForkingServer 多进程服务器

我们以线程池服务器为例,其他方式相同。

import sys
sys.path.append('gen-py')  # 增加生成代码的查找包路径from calculate import Calculate
from base.ttypes import InvalidOperation, Operationfrom thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TCompactProtocol
from thrift.server import TServerclass CalculateHandler(Calculate.Iface):"""被调用方法的具体实现"""def ping(self):print('ping()')def divide(self, num1, num2):if num2 == 0:raise InvalidOperation(0, 'Cannot divide by 0')return num1 / num2def calculate(self, work):if work.op == Operation.ADD:val = work.num1 + work.num2elif work.op == Operation.SUBTRACT:val = work.num1 - work.num2elif work.op == Operation.MULTIPLY:val = work.num1 * work.num2else:raise InvalidOperation(work.op, 'Invalid operation')return valif __name__ == '__main__':handler = CalculateHandler()processor = Calculate.Processor(handler)transport = TSocket.TServerSocket(host='127.0.0.1', port=8888)tfactory = TTransport.TBufferedTransportFactory()pfactory = TCompactProtocol.TCompactProtocolFactory()server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory)server.serve()print('服务器已启动')

客户端

import sys
sys.path.append('gen-py')from calculate import Calculate
from base.ttypes import InvalidOperation, Operation, Workfrom thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TCompactProtocoldef main():transport = TSocket.TSocket('127.0.0.1', 8888)# 使用缓存传输transport = TTransport.TBufferedTransport(transport)# 使用压缩的二进制消息协议protocol = TCompactProtocol.TCompactProtocol(transport)client = Calculate.Client(protocol)# 连接transport.open()client.ping()print('ping()')result = client.divide(100, 50)print('100/50={}'.format(result))try:result = client.divide(100, 0)except InvalidOperation as e:print(e.why)work = Work(1, 2, Operation.ADD)result = client.calculate(work)print('1+2={}'.format(result))work = Work(15, 10, Operation.SUBTRACT)result = client.calculate(work)print('15-10={}'.format(result))# 关闭transport.close()if __name__ == '__main__':main()

Thrift的服务器和客户端Python案例相关推荐

  1. 【Linux网络编程】网络基础 和 socket套接字 服务器与客户端 详细案例说明

    目录 前言 一.网络编程三要素 1.IP地址 2.通信协议 3.端口号 二.SOCKET套接字 SOCKET概述 SOCKET分类 三.代码实现 1.编程思路 2.建立服务器 服务器完整代码 3.建立 ...

  2. python客户端和服务端实验_结合服务器和客户端python

    我正在尝试使用python(稍后可能用c语言)和TCP套接字制作一个本地网络聊天程序. 我的目的是让服务器监听当前计算机的地址以获取传入消息,并将这些消息转发给客户端(我现在还不确定). 客户端将是一 ...

  3. Socket心跳包异常检测的C语言实现,服务器与客户端代码案例

    在Socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能较大.本文实现的是由客户端给服务器发送心跳包,服务器不必返回应答包,而是通过判断客户在线 ...

  4. 使用python中的socket实现服务器和客户端,并完成图片的传输

    使用python中的socket实现服务器和客户端,并完成图片的传输. 2018年03月09日 16:05:23 阅读数:301 socket服务器代码: [python] view plaincop ...

  5. pythontcp服务器框架_tcp服务器简单框架-python客户端

    tcp服务端为C++代码,在Windows下实现,代码如下: // a TCP Server #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECAT ...

  6. 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world...

    2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...

  7. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信

    客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...

  8. python udp客户端 服务器实现方式_python3实现UDP协议的简单服务器和客户端

    利用python中的socket模块中的来实现UDP协议,这里写一个简单的服务器和客户端.为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了. UD ...

  9. Python实现FTP服务器和客户端

    基础知识 FTP只通过TCP连接,FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口). 通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的概念时, ...

最新文章

  1. python中字符串格式化
  2. 面向对象程序设计上机练习一(函数重载)
  3. 分布式之2PC与3PC提交协议
  4. 3G助推智慧医疗 看病将更加“智能化”
  5. Oracle分析函数一——函数列表
  6. ssms没有弹出服务器验证_powerbi报表服务器搭建链接
  7. .NET 项目开发总结
  8. oracle百分比变成小数,oracle中计算百分比,并同时解决小数点前0不显示的问题...
  9. mybatis--properties以及别名定义(四)
  10. NodeJs从零构建代理ip池(一)介绍
  11. AD7124-4调试经验分享
  12. GitHub客户端的使用方法
  13. cubietruck下配置aria2+yaaw
  14. 用 HBuilder X 编辑 Markdown 文档,如何自定义表格列宽
  15. c语言编程中的逗号与结果,C++编程中逗号运算符和条件运算符的使用方法讲解...
  16. maya2020 redshift3.0.31demo版安装方法。
  17. java注解和反射详解
  18. 网络——数字数据编码
  19. 拯救者R9000X显卡驱动安装
  20. 未来量子计算机运算速度,中国科学家实现 “量子霸权”,计算速度比超级计算机快100万亿倍...

热门文章

  1. Myeclipse中修改项目默认编码还是乱码?一步永久解决!
  2. 2022-2028年中国绿冻石行业市场研究及前瞻分析报告
  3. 2022-2028年中国再生天然橡胶行业市场调查分析及未来前景分析报告
  4. 2022-2028年中国女式西装行业研究及前瞻分析报告
  5. Git 常用操作(2)- 创建标签
  6. 【JavaScript总结】JavaScript发展与学习内容
  7. OpenCL™(开放计算语言)概述
  8. TensorFlow创建DeepDream网络
  9. MinkowskiBroadcast广播
  10. CentOS7系统下bower 命令权限问题