pythonmath库引入方法(python使用thrift教程的方法示例)
类别:脚本大全 浏览量:2780
时间:2021-11-08 14:12:04 pythonmath库引入方法
python使用thrift教程的方法示例一、前言:
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版本: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 json from test import transmit from test.ttypes import * from thrift.transport import tsocket from thrift.transport import ttransport from thrift.protocol import tbinaryprotocol from thrift.server import tserver import socket class 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 sys import jsonfrom test import transmit from test.ttypes import * from test.constants import * from thrift import thrift from thrift.transport import tsocket from thrift.transport import ttransport from thrift.protocol import tbinaryprotocol transport = tsocket.tsocket( '127.0.0.1' , 8000 ) transport = ttransport.tbufferedtransport(transport) protocol = tbinaryprotocol.tbinaryprotocol(transport) client = transmit.client(protocol) # connect! transport. open () cmd = 2 token = '1111-2222-3333-4444' data = json.dumps({ "name" : "zhoujielun" }) msg = client.invoke(cmd,token,data) print (msg) transport.close() # 执行结果:cmd不匹配 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:http://www.cnblogs.com/shenh/p/10529073.html
您可能感兴趣
- 利用python合并pdf(Python合并同一个文件夹下所有PDF文件的方法)
- thinkphp实战教程之博客技术学习(python3编写ThinkPHP命令执行Getshell的方法)
- python list基本操作(Python3中列表list合并的四种方法)
- python数据分析删除重复值(Python3实现从排序数组中删除重复项算法分析)
- python 配置文件环境变量(python环境路径配置以及命令行运行脚本)
- python scrapy爬虫教程视频(详解python3 + Scrapy爬虫学习之创建项目)
- python的模块与包与库(Python 中包/模块的 `import` 操作代码)
- python从零开始学习人工智能(为何人工智能AI首选Python?读完这篇文章你就知道了推荐)
- python爬虫爬取知乎(详解用python写网络爬虫-爬取新浪微博评论)
- 超简单使用Python换脸实例(超简单使用Python换脸实例)
- pythonselenium自动选框(python selenium 弹出框处理的实现)
- python在txt指定行添加文本(Python修改文件往指定行插入内容的实例)
- pythondatetime库详解(python使用time、datetime返回工作日列表实例代码)
- python 怎么解析中文(Python中一般处理中文的几种方法)
- python3.7.2 详细安装教程(python3.5安装python3-tk详解)
- python发送钉钉消息(钉钉群自定义机器人消息Python封装的实例)
- 感冒要吃什么药(猫咪感冒要吃什么药)
- 下雪会怎样(下雪怎样画)
- 白蓝色穿搭(白蓝色衣服配什么裤子)
- 天空是什么颜色(天空是什么颜色的英语)
- 高马尾扎发(高马尾扎发教程视频)
- 这里输入关键词(请手动输入关键词)
热门推荐
- vue功能测试和生产环境切换(vue 单元测试的推荐插件和使用示例)
- pythondjango图解(详解Django-restframework 之频率源码分析)
- nginx配置root后的路径打不开(详解nginx.conf 中 root 目录设置问题)
- 云服务器如何进入(云服务器配置怎么看?)
- nginx怎么配置静态资源(nginx实现发布静态资源的方法)
- ASP.NET List 集合操作
- vue3和vue2(Vue3对比Vue2的优点总结)
- dockernginx怎么设置容器(docker nginx + https 子域名配置详细教程)
- vueaxios使用教程交流(Vue使用axios图片上传遇到的问题)
- div 左右布局比例(div对齐与网页布局详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9