香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

python使用thrift教程的方法示例


时间:2022-04-02 10:24 作者:admin610456


一、前言:  

Thrift 是一种接口描述语言和二进制通信协议。以前也没接触过,最近有个项目需要建立自动化测试,这个项目之间的微服务都是通过 Thrift 进行通信的,然后写自动化脚本之前研究了一下。

需要定义一个xxx.thrift的文件, 来生成各种语言的代码,生成之后我们的服务提供者和消费者,都需要把代码引入,服务端把代码实现,消费者直接使用API的存根,直接调用。

和 http 相比,同属于应用层,走 tcp 协议。Thrift 优势在于发送同样的数据,request包 和 response包 要比 http 小很多,在整体性能上要优于 http 。

二、使用方法

环境准备:

从官网上下载 windows 版的 thrift.exe:http://archive.apache.org/dist/thrift/0.9.3/(我这里用的是0.9.3版本)

python/' target='_blank'>python版本:Python 3.7.1

pip3 install thrift

1.首先使用 thrift 之前需要定义一个 .thrift 格式的文件,比如 test.thrift

service Transmit {string sayMsg(1:string msg);string invoke(1:i32 cmd 2:string token 3:string data)}

然后运行命令:thrift-0.9.3.exe -gen py test.thrift 生成 python 代码

生成如下结构

2.然后将生成的 python 代码 和 文件,放到新建的 python 项目中。完成后先运行服务器代码。

服务端代码 server.py:

import jsonfrom test import Transmitfrom test.ttypes import *from thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocolfrom thrift.server import TServerimport socketclass TransmitHandler:  def __init__(self):    self.log = {}  def sayMsg(self, msg):    msg = json.loads(msg)    print("sayMsg(" + msg + ")")    return "say " + msg + " from " + socket.gethostbyname(socket.gethostname())  def invoke(self,cmd,token,data):    cmd = cmd    token =token    data = data    if cmd ==1:      return json.dumps({token:data})    else:      return 'cmd不匹配'if __name__=="__main__":  handler = TransmitHandler()  processor = Transmit.Processor(handler)  transport = TSocket.TServerSocket('127.0.0.1', 8000)  tfactory = TTransport.TBufferedTransportFactory()  pfactory = TBinaryProtocol.TBinaryProtocolFactory()  server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)  print("Starting python server...")  server.serve()

客户端代码 client.py

import sysimport jsonfrom test import Transmitfrom test.ttypes import *from test.constants import *from thrift import Thriftfrom thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocoltransport = TSocket.TSocket('127.0.0.1', 8000)transport = TTransport.TBufferedTransport(transport)protocol = TBinaryProtocol.TBinaryProtocol(transport)client = Transmit.Client(protocol)# Connect!transport.open()cmd = 2token = '1111-2222-3333-4444'data = json.dumps({"name":"zhoujielun"})msg = client.invoke(cmd,token,data)print(msg)transport.close()# 执行结果:cmd不匹配

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)