前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >Thrift的服务器和客户端Python案例

Thrift的服务器和客户端Python案例

作者头像
Lansonli
发布于 2021-10-09 07:52:52
发布于 2021-10-09 07:52:52
1.4K00
代码可运行
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客
运行总次数:0
代码可运行

服务器

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

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

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

代码语言:javascript
代码运行次数:0
复制
import sys
sys.path.append('gen-py')  # 增加生成代码的查找包路径

from calculate import Calculate
from base.ttypes import InvalidOperation, Operation

from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TCompactProtocol
from thrift.server import TServer


class 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 / num2

    def calculate(self, work):
        if work.op == Operation.ADD:
            val = work.num1 + work.num2
        elif work.op == Operation.SUBTRACT:
            val = work.num1 - work.num2
        elif work.op == Operation.MULTIPLY:
            val = work.num1 * work.num2
        else:
            raise InvalidOperation(work.op, 'Invalid operation')
        return val


if __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('服务器已启动')

客户端

代码语言:javascript
代码运行次数:0
复制
import sys
sys.path.append('gen-py')

from calculate import Calculate
from base.ttypes import InvalidOperation, Operation, Work

from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TCompactProtocol


def 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()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
下周二晚云原生正发声 l 云原生时代的应用开发方式变革
云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革。 腾讯云主办首个云原生百科知识直播节目——《云原生正发声》。直播内容围绕云原生领域,覆盖实时的云原生技术、实践、性能优化、前沿趋势、云原生案例分享、企业云开发者成长路径、就业等等内容。 《云原生正发声》,2021年国内首个云原生百科知识直播节目,将在每周二晚19:30 准时开播。通过本直播节目帮助云原生技术使用者和爱好者加深云原生技术的理解,同时推动云原生与企业IT的融
腾讯云原生
2021/05/07
2990
每周二晚云原生正发声 l 多种模式下的深度学习弹性训练
云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革。 腾讯云主办首个云原生百科知识直播节目——《云原生正发声》。直播内容围绕云原生领域,覆盖实时的云原生技术、实践、性能优化、前沿趋势、云原生案例分享、企业云开发者成长路径、就业等等内容。 《云原生正发声》,2021年国内首个云原生百科知识直播节目,将在每周二晚19:30 准时开播。通过本直播节目帮助云原生技术使用者和爱好者加深云原生技术的理解,同时推动云原生与企业IT的融
腾讯云原生
2021/04/19
3920
国内首个云原生百科知识直播,精彩尽在每周二晚7点半!
云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革。 腾讯云主办首个云原生百科知识直播节目——《云原生正发声》。直播内容围绕云原生领域,覆盖实时的云原生技术、实践、性能优化、前沿趋势、云原生案例分享、企业云开发者成长路径、就业等等内容。 《云原生正发声》,2021年国内首个云原生百科知识直播节目,将在每周二晚19:30 准时开播。通过本直播节目帮助云原生技术使用者和爱好者加深云原生技术的理解,同时推动云原生与企业IT的融
腾讯云原生
2021/04/12
1.9K0
国内首个云原生百科知识节目,明晚7点半开播啦!
云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革。 腾讯云主办首个云原生百科知识直播节目——《云原生正发声》。直播内容围绕云原生领域,覆盖实时的云原生技术、实践、性能优化、前沿趋势、云原生案例分享、企业云开发者成长路径、就业等等内容。 《云原生正发声》,2021年国内首个云原生百科知识直播节目,将在每周二晚19:30 准时开播。通过本直播节目帮助云原生技术使用者和爱好者加深云原生技术的理解,同时推动云原生与企业IT的融
腾讯云原生
2021/04/13
4720
明晚7点半见 l 直播:多种模式下的深度学习弹性训练
云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革。 腾讯云主办首个云原生百科知识直播节目——《云原生正发声》。直播内容围绕云原生领域,覆盖实时的云原生技术、实践、性能优化、前沿趋势、云原生案例分享、企业云开发者成长路径、就业等等内容。 《云原生正发声》,2021年国内首个云原生百科知识直播节目,将在每周二晚19:30 准时开播。通过本直播节目帮助云原生技术使用者和爱好者加深云原生技术的理解,同时推动云原生与企业IT的融合,助
腾讯云原生
2022/04/14
3100
明晚7点半见 l 直播:多种模式下的深度学习弹性训练
直播预约|TencentOS “如意”显威力,大力提升服务器资源利用率
腾讯云主办首个云原生百科知识直播节目——《云原生正发声》,每周二晚19:30 开播。《云原生正发声》围绕云原生技术领域,覆盖实时的云原生技术实践、性能优化、前沿趋势、当前热点、案例分享、大咖分享、开发者成长路径、就业方向选择等等内容。 【云原生正发声】六月份直播专场6月15日的基于K8s全场景在离线混部方案的分享,大受观众喜爱,在短短10分钟的互动问答环节,竟有20余名参与者留言提问。 由于时间关系,讲师并未全部回答,但有部分关于”CPU资源利用“、”为什么要做服务器层面的资源QoS“等问题都涉及到我们接
腾讯云原生
2021/06/18
7640
4月容器产品技术月报|五一快乐,留言有礼
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 2021年4月 VOL:12 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性 4月上新 腾讯云边缘服务TKE@Edge 从中心云管理边缘云资源的容器系统 边缘容器服务(Tencent Kubernetes Engine for Edge,简称 TKE Edge)是腾讯云容器服务推出的用于从中心云管理边缘云资源的容器系统。
腾讯云原生
2021/05/06
8620
6月15日|揭秘腾讯内部业务多方落地,节约上亿成本内幕
腾讯云主办首个云原生百科知识直播节目——《云原生正发声》,每周二晚19:30 开播。《云原生正发声》围绕云原生技术领域,覆盖实时的云原生技术实践、性能优化、前沿趋势、当前热点、案例分享、大咖分享、开发者成长路径、就业方向选择等等内容。 【云原生正发声】开播至今,已推出4期啦~第五期干货主题更精彩! 腾讯大数据,基于多年在混部技术积累的实践经验与基于 Kubernetes 的全场景在线离线混部解决方案,对 K8s 零入侵,兼容各种场景(容器化、非容器化等),已经在腾讯内部业务多方落地,节约了上亿成本。 这些
腾讯云原生
2021/06/11
5990
1月腾讯云容器产品技术月报|虎年双重豪礼等你拿!
2022年1月 VOL:21 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性 1 月上新 腾讯云容器服务公有版TKE 高可扩展和高性能容器管理服务 腾讯云容器服务(Tencent Kubernetes Engine,TKE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。 节点池支持设置云标签、实例创建策略 TKE 虚拟节点节点功能支持 1.20 集群 文件存储CFS支持V3/V4两种协议挂载模式 通过CBS-CSI动
腾讯云原生
2022/02/08
2.2K0
4月腾讯云容器产品技术月报|五一快乐,豪礼送送送!
2022年4月 VOL:24 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性4月上新 腾讯云弹性容器服务EKS 安全稳定的无服务器 Kubernetes 服务 弹性容器服务(Elastic Kubernetes Service,EKS)是腾讯云容器服务推出的无须用户购买节点即可部署工作负载的服务模式。 EKS 创建工作负载时支持开启自动升配 EKS 支持 Job 批量调度能力,需开放白名单使用 支持工具化将 TKE 集群升级至 EKS 集群 EKS 上线
腾讯云原生
2022/05/05
9080
4月腾讯云容器产品技术月报|五一快乐,豪礼送送送!
12月腾讯云容器产品技术月报|元旦双重豪礼等你拿!
2021年12月 VOL:20 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性12月上新 腾讯云容器服务公有版TKE 高可扩展和高性能容器管理服务 腾讯云容器服务(Tencent Kubernetes Engine,TKE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。 CFS-CSI动态创建CFS实例时支持添加云标签 (详情可扫码了解) 最新播报 腾讯云开源首个etcd一站
腾讯云原生
2022/01/04
1.3K0
明日直播|如何在保障在线业务服务质量前提下,提升服务器资源利用率?
腾讯云主办首个云原生百科知识直播节目——《云原生正发声》,每周二晚19:30 开播。《云原生正发声》围绕云原生技术领域,覆盖实时的云原生技术实践、性能优化、前沿趋势、当前热点、案例分享、大咖分享、开发者成长路径、就业方向选择等等内容。 上周我们分享了"Caelus—基于K8s全场景在离线混部技术实践"的技术专题,受到技术开发爱好者们的踊跃追捧及频繁的在线问答交流。 还没有收看的同学也不用着急,我们所有的分享都有直播回放,手指滑倒底部,就可以看到【云原生正发声】的全部直播回放哦~ 上次直播的交流过程中,很多
腾讯云原生
2021/06/23
5630
5月腾讯云容器产品技术月报|容器给大小儿童发礼物啦~
2022年5月 VOL:25 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性5月上新 腾讯云容器服务公有版TKE 高可扩展和高性能容器管理服务 腾讯云容器服务(Tencent Kubernetes Engine,TKE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。 TKE集群支持 Kubernetes 1.22 版本 (白名单体验中) ‍‍‍扩展组件 Addon 支持组件升级 CBS/CFS/COS-CSI 组件支持
腾讯云原生
2022/05/31
1.2K0
5月腾讯云容器产品技术月报|容器给大小儿童发礼物啦~
6月直播专场来了|腾讯基于 K8s 的全场景在离线混部技术实践
腾讯云主办首个云原生百科知识直播节目——《云原生正发声》,每周二晚19:30 开播。《云原生正发声》围绕云原生技术领域,覆盖实时的云原生技术实践、性能优化、前沿趋势、当前热点、案例分享、大咖分享、开发者成长路径、就业方向选择等等内容。 【云原生正发声】开播至今,已推出4期啦~本月干货主题更精彩! 6月初初到来,我们集结了一批技术专家,为技术爱好者们精心策划了一场大数据云原生专场——腾讯基于K8s的全场景在离线混部技术实践。 腾讯大数据,基于多年在混部技术积累的实践经验与基于 Kubernetes 的全场景
腾讯云原生
2021/06/10
1K0
11月腾讯云容器产品技术月报|转发集赞抢腾讯周边
2021年11月 VOL:19 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性11月上新 腾讯云边缘服务TKE@Edge 从中心云管理边缘云资源的容器系统 边缘容器服务(Tencent Kubernetes Engine for Edge,简称 TKE Edge)是腾讯云容器服务推出的用于从中心云管理边缘云资源的容器系统。 公有云 TKE-Edge 支持边缘节点绑定 ENI 公有云 TKE-Edge 支持边缘节点 Pod 直通能
腾讯云原生
2021/12/01
4.8K1
8月腾讯云容器产品技术月报|留言抢腾讯定制T恤
2021年8月 VOL:16 腾小云告诉你最前线的产品新特性 总有一款让你心动~ 云说新品 容器产品新特性 8月上新 腾讯云边缘服务TKE@Edge 从中心云管理边缘云资源的容器系统 边缘容器服务(Tencent Kubernetes Engine for Edge,简称 TKE Edge)是腾讯云容器服务推出的用于从中心云管理边缘云资源的容器系统。 ServiceGroup功能增强:DeploymentGrid 支持查看和管理实例,支持对分布在不同地域的应用
腾讯云原生
2021/09/03
1.6K0
9月月报|腾讯云容器女团邀你共祝祖国生日快乐!
2021年9月 VOL:17 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性 9月上新 腾讯云边缘服务TKE@Edge 从中心云管理边缘云资源的容器系统 边缘容器服务(Tencent Kubernetes Engine for Edge,简称 TKE Edge)是腾讯云容器服务推出的用于从中心云管理边缘云资源的容器系统。  SuperEdge 0.6.0 版本9 月底发布,包含特性如下: 集成TopoLVM,支持边缘本地持久化存
腾讯云原生
2021/10/08
1K0
一场直播,深度了解 K8s 高性能调度器设计与实现
腾讯云主办首个云原生百科知识直播节目——《云原生正发声》,每周二晚19:30 开播。《云原生正发声》围绕云原生技术领域,覆盖实时的云原生技术实践、性能优化、前沿趋势、当前热点、案例分享、大咖分享、开发者成长路径、就业方向选择等等内容。 随着企业各项业务快速发展,离线计算集群规模和提交作业量持续增长,资源利用率问题日益凸显,因此混部应运而生。引入混部的离线作业在一些大规模场景下,K8s的调度器性能瓶颈问题也尤为严重。 本期将由腾讯高级工程师“马林”和我们分享“K8s 高性能调度器设计与实现”。 如果你也想知
腾讯云原生
2021/06/25
8240
直播报名中|腾讯广告 AMS 容器化之路
看过这篇文的读者们,你想要的直播干货来了!  案例 | 腾讯广告 AMS 的容器化之路 该篇文章由腾讯广告资深运维工程师张煜所写,分享从业务角度来介绍,云原生在大型线上服务中的优势和使用方法,并结合腾讯广告自有的特点及策略,来实现腾讯广告在高并发、自动化等场景下的容器化实践。 【云原生正发声】第十一期,我们邀请到了该篇文的作者——腾讯广告资深运维工程师张煜,来和大家分享腾讯广告在云原生改造中遇到的困难和解决方案。 如何在百万订单和每日几十亿流量的架构中,实现 TKE 的高可用?这也一定是你想了解的技术
腾讯云原生
2021/07/29
8080
3月腾讯云容器产品技术月报|参与抽奖成为超级锦鲤!
2022年3月 VOL:23 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性3月上新 腾讯云弹性容器服务EKS 安全稳定的无服务器 Kubernetes 服务 弹性容器服务(Elastic Kubernetes Service,EKS)是腾讯云容器服务推出的无须用户购买节点即可部署工作负载的服务模式。 EKS 支持 HPC 组件 EKS 镜像缓存支持自定义延期销毁 CBS 盘 EKS 资源创建时若当前规格无资源,则支持资源自动升配重试 新增预留券资源概览,
腾讯云原生
2022/04/14
1.2K0
3月腾讯云容器产品技术月报|参与抽奖成为超级锦鲤!
推荐阅读
下周二晚云原生正发声 l 云原生时代的应用开发方式变革
2990
每周二晚云原生正发声 l 多种模式下的深度学习弹性训练
3920
国内首个云原生百科知识直播,精彩尽在每周二晚7点半!
1.9K0
国内首个云原生百科知识节目,明晚7点半开播啦!
4720
明晚7点半见 l 直播:多种模式下的深度学习弹性训练
3100
直播预约|TencentOS “如意”显威力,大力提升服务器资源利用率
7640
4月容器产品技术月报|五一快乐,留言有礼
8620
6月15日|揭秘腾讯内部业务多方落地,节约上亿成本内幕
5990
1月腾讯云容器产品技术月报|虎年双重豪礼等你拿!
2.2K0
4月腾讯云容器产品技术月报|五一快乐,豪礼送送送!
9080
12月腾讯云容器产品技术月报|元旦双重豪礼等你拿!
1.3K0
明日直播|如何在保障在线业务服务质量前提下,提升服务器资源利用率?
5630
5月腾讯云容器产品技术月报|容器给大小儿童发礼物啦~
1.2K0
6月直播专场来了|腾讯基于 K8s 的全场景在离线混部技术实践
1K0
11月腾讯云容器产品技术月报|转发集赞抢腾讯周边
4.8K1
8月腾讯云容器产品技术月报|留言抢腾讯定制T恤
1.6K0
9月月报|腾讯云容器女团邀你共祝祖国生日快乐!
1K0
一场直播,深度了解 K8s 高性能调度器设计与实现
8240
直播报名中|腾讯广告 AMS 容器化之路
8080
3月腾讯云容器产品技术月报|参与抽奖成为超级锦鲤!
1.2K0
相关推荐
下周二晚云原生正发声 l 云原生时代的应用开发方式变革
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验