python部署thrift服务以及客户端

2024-06-16 13:48

本文主要是介绍python部署thrift服务以及客户端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一步:定义接口

文件名:parse.thrift

内容如下:

 

 service Parse {string parseHtml2Xml(1:string html)}


第二步:在thrift接口所在目录执行thrift命令

 

 

# thrift --gen py parse.thrift

这步会在当前目录生成gen-py文件夹

 

如果是用php,则用如下命令:

 

 服务端:thrift --gen php:server helloworld.thrift
 客户端:thrift --gen php:client helloworld.thrift

如果是用java,则用如下命令:

Linux环境:thrift --gen java importservice.thrift

windows环境: thrift-0.9.3.exe  --gen java importservice.thrift

要注意的是,服务端和客户端使用的thrift版本要保持一致

 

第三步: server服务的开发,文件名,server.py

import sys 
sys.path.append("./gen-py/parse")from Parse import *
from ttypes import *
from thrift.Thrift import TType, TMessageType, TException
from thrift.Thrift import TProcessor
from thrift.transport import TSocket
from thrift.protocol import TBinaryProtocol, TProtocol
from thrift.server import TServer
import logging
from constants import *

 

 

可在服务中定义日志模块,记录日志信息

 

logging.basicConfig(filename='logger.log', level=logging.INFO, format='%(asctime)s  %(filename)s : %(levelname)s  %(message)s', datefmt='%Y-%m-%d %H:%M:%S')


真正的服务代码

 

 

class ParseHandler:def parseHtml2Xml(self, html):logging.info("start parse html")return "1234"

 

def run():#创建服务端handler = ParseHandler()processor = Processor(handler)#监听端口transport = TSocket.TServerSocket('localhost', 9234)#选择传输层tfactory = TTransport.TBufferedTransportFactory()#选择传输协议pfactory = TBinaryProtocol.TBinaryProtocolFactory()#创建服务端server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory)server.setNumThreads(5)logging.info('start thrift serve in python')server.serve()logging.info('done!')if __name__ == '__main__':run()


第四步:启动python服务

 

# python  server.py

 

第五步: client客户端的开发,客户端文件名为client.py

 

import sys 
sys.path.append('./gen-py/parse')from Parse import *
from thrift import Thrift 
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
import requeststry:transport = TSocket.TSocket('localhost', 9234)transport = TTransport.TBufferedTransport(transport)protocol = TBinaryProtocol.TBinaryProtocol(transport)client = Client(protocol)transport.open()print 'start'res = requests.get('http://baike.baidu.com/item/%E7%A2%A7%E6%A1%82%E5%9B%AD%E5%98%89%E8%AA%89/19775381')xml = client.parseHtml2Xml(res.content)print xml transport.close()
except Thrift.TException as e:print 'exceptino'print e


第六步: 启动客户端调用

 

# python  client.py

 

下面是一个thrift文件的case

 

 

service ImportService {//单个导入string singleImport(1:string url, 2:list<string> importModule, 3:i64 authorId)//批量新增导入string batchCreateImport(1:list<string> urls, 2:list<string> importModule, 3:i64 authorId)//批量覆盖导入string batchCoverImport(1:list<string> urls, 2:list<string> importModule, 3:i64 authorId)//检查相似度string checkSimilarity(1:string url, 2:list<string> importModule)//检查词条状态string checkLemmaStatus(1:string url)//批量导入时获取导入进度string getImportProcess(1:i64 authorId)
}

 

 

在thrift中,i32表示整型int,i64表示长整型long
 

这篇关于python部署thrift服务以及客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1066617

相关文章

python进行while遍历的常见错误解析

《python进行while遍历的常见错误解析》在Python中选择合适的遍历方式需要综合考虑可读性、性能和具体需求,本文就来和大家讲解一下python中while遍历常见错误以及所有遍历方法的优缺点... 目录一、超出数组范围问题分析错误复现解决方法关键区别二、continue使用问题分析正确写法关键点三

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

C#使用MQTTnet实现服务端与客户端的通讯的示例

《C#使用MQTTnet实现服务端与客户端的通讯的示例》本文主要介绍了C#使用MQTTnet实现服务端与客户端的通讯的示例,包括协议特性、连接管理、QoS机制和安全策略,具有一定的参考价值,感兴趣的可... 目录一、MQTT 协议简介二、MQTT 协议核心特性三、MQTTNET 库的核心功能四、服务端(BR

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将