返回顶部
首页 > 资讯 > 后端开发 > Python >Thrift in python
  • 875
分享到

Thrift in python

Thriftpython 2023-01-31 06:01:11 875人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

Thrift官网上的文档很少,从网上搜到的也大都千篇一律,即使是《Thrift: the missing guide》对如何构建python的server和client也没有进行详尽讲述。本博特意看了下thrift提供的Python l

Thrift官网上的文档很少,从网上搜到的也大都千篇一律,即使是《Thrift: the missing guide》对如何构建python的server和client也没有进行详尽讲述。本博特意看了下thrift提供的Python lib,对书写相应的server和client进行了简单的总结,如有错误,欢迎大家指正。

1. Thrift network stack

Transport

Transport网络读写(SocketHttp等)抽象,用于和其他thrift组件解耦。

Transport的接口包括:open, close, read, write, flush, isOpen, readAll。

Server端需要ServerTransport(对监听socket的一种抽象),用于接收客户端连接,接口包括:listen, accept, close。

python中Transport的实现包括:TSocket, Thttpserver, TSSLSocket, TTwisted, TZlibTransport,都是对某种协议或框架的实现。还有两个装饰器,用于为已有的Transport添加功能,TBufferedTransport(增加缓冲)和TFramedTransport(添加帧)。

在创建server时,传入的时Tranport的工厂,这些Factory包括:TTransportFactoryBase(没有任何修饰,直接返回),TBufferedTransportFactory(返回带缓冲的Transport)和TFramedTransportFactory(返回帧定位的Transport)。

Protocol

Protocol用于对数据格式抽象,在rpc调用时序列化请求和响应。

TProtocol的实现包括:TJSONProtocol,TSimplejsONProtocol,TBinaryProtocol,TBinaryPotocolAccelerated,TCompactProtocol。

上面每种类型,都有对应的Factory类,用于创建该类对象。

Processor

Processor对stream读写抽象,最终会调用用户编写的handler已响应对应的service。具体的Processor有compiler生成,用户需要实现service的实现类。

Server

Server创建Transport,输入、输出的Protocol,以及响应service的handler,监听到client的请求然后委托给processor处理。

TServer是基类,构造函数的参数包括:

1) processor, serverTransport

2) processor, serverTransport, transportFactory, protocolFactory

3) processor, serverTransport, inputTransportFactory, outputTransportFactory, inputProtocolFactory, outputProtocolFactory

TServer内部实际上需要3)所列的参数,1)和2)会导致对应的参数使用默认值。

TServer的子类包括:TSimpleServer, TThreadedServer, TThreadPoolServer, TForkingServer, THttpServer, TNonblockingServer, TProcessPoolServer

TServer的serve方法用于开始服务,接收client的请求。

2. Code generated

constants.py: 包含声明的所有常量

ttypes.py: 声明的struct,实现了具体的序列化和反序列化

SERVICE_NAME.py: 对应service的描述文件,包含了:

Iface: service接口定义

Client: client的rpc调用桩

Processor: 处理service的具体方法调用,需要传入server端实现的handler

3. 用法

Thrift的用法实际上很简单,定义好IDL,然后实现service对应的handler(方法名、参数列表与接口定义一致接口),最后就是选择各个组件。需要选择的包括:Transport(一般都是socket,只是十分需要选择buffed和framed装饰器factory),Protocol,Server。

就是这么简单,大部分事情thrift已经帮做好了。具体组件怎么选择,多尝试吧。


--结束END--

本文标题: Thrift in python

本文链接: https://lsjlt.com/news/190042.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Thrift in python
    Thrift官网上的文档很少,从网上搜到的也大都千篇一律,即使是《Thrift: the missing guide》对如何构建python的server和client也没有进行详尽讲述。本博特意看了下thrift提供的python l...
    99+
    2023-01-31
    Thrift python
  • Python Thrift示例
    Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。本文将从 Python开发人员角度简单介绍 Apache Thrift 的架构、开发和使用。 Thrift networ...
    99+
    2023-01-31
    示例 Python Thrift
  • ubuntu下python thrift
    1、下载thrift: wget http://mirror.bjtu.edu.cn/apache//thrift/0.8.0/thrift-0.8.0.tar.gz  2、安装依赖: sudo apt-get install build-...
    99+
    2023-01-31
    ubuntu python thrift
  • thrift的使用--python
    转载blog:http://www.cnblogs.com/pinking/p/7726478.html在这里要补充一点的就是在在这里python要安装thrift包时候,可以直接在安装好的thrift好的模块中sudo python s...
    99+
    2023-01-31
    thrift python
  • 使用python-thrift问题汇总
    使用环境是Centos6.4,python版本2.7.3,thrift版本0.9.0。使用中遇到了以下问题:1. root:code for hash md5 was not found没有找到MD5的库,于是解释器又去寻找SHA1 SH...
    99+
    2023-01-31
    python thrift
  • python thrift 服务端与客户
    一、简介   thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#...
    99+
    2023-01-31
    服务端 客户 python
  • python怎么实现Thrift服务端
    这篇文章将为大家详细讲解有关python怎么实现Thrift服务端,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所...
    99+
    2023-06-14
  • python实现Thrift服务端的方法
    目录环境准备编写.thrift文件生成python对应的thrift代码编写服务端编写客户端用于测试测试服务端近期在项目中存在跨编程语言协作的需求,使用到了Thrift。本文将记录用...
    99+
    2024-04-02
  • python部署thrift服务以及客户
    第一步:定义接口 文件名:parse.thrift 内容如下:   service Parse { string parseHtml2Xml(1:string html) } 第二步:在thrift接口所在目录执行...
    99+
    2023-01-31
    客户 python thrift
  • 如何分析Thrift示例
    今天给大家介绍一下如何分析Thrift示例。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。demo.thrift 文件内容如下namespace java co...
    99+
    2023-06-03
  • 利用python访问Hbase(Thrift模块安装与测试)
    hadoop环境介绍:master服务:node1slave服务器:node2,node3,node4mysql服务器:node29Thrift安装在node1服务器上!相关软件版本:hadoop版本:ha...
    99+
    2024-04-02
  • hbase之python利用thrift操作hbase数据和shell操作
    前沿:        以前都是用mongodb的,但是量大了,mongodb显得不那么靠谱,改成hbase撑起一个量级。HBase是Apache Hadoop的数据库...
    99+
    2024-04-02
  • Threading in Python-
    原文是2.x版本的,然后应该是英文的.我在学习的过程中,同时改成python 3.3并且改成中文,引入一些自己的理解.Thread Objects线程对象The simplest way to use a Thread is to inst...
    99+
    2023-01-31
    Threading Python
  • 「Spark」Spark SQL Thrift Server运行方式
    Spark SQL可以使用JDBC/ODBC或命令行接口充当分布式查询引擎。这种模式,用户或者应用程序可以直接与Spark SQL交互,以运行SQL查询,无需编写任何代码。Spark SQL提供两种方式来运行SQL:通过运行Thr...
    99+
    2021-02-24
    「Spark」Spark SQL Thrift Server运行方式
  • 安装Apache Thrift网关到CentOS 2
    1、生成 python用的thrift模块thrift --gen py /src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift(该...
    99+
    2024-04-02
  • ​thrift是什么及怎么使用
    Thrift是一个软件框架,用于跨语言的服务开发。它由Apache软件基金会开发和维护,旨在帮助开发人员编写高效和可扩展的客户端-服...
    99+
    2023-10-21
    ​thrift
  • Python GIL(Global In
    一、GIL介绍 GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。 可以肯定的一点是:保护不同的数据的安全,就应该加不同的锁。 要了解...
    99+
    2023-01-31
    Python GIL Global
  • Python in Hacking[LO
    Pnig0s p.s: ***一韩国站,遭遇Mysql4,好在有FILE权限只能批量LOAD_FILE路径,为了避免繁重的工作量写了这个脚本,字典文件名为dic.txt路径一行一个,因为环境不同,此脚本并非通用,稍作改动即可。复制代码请务必...
    99+
    2023-01-31
    Python Hacking LO
  • Python in Hacking[Ge
    #!/usr/bin/python #  -*- coding:utf-8 -*-  import urllib2 import re import string from sgmllib import SGMLParser class g...
    99+
    2023-01-31
    Python Hacking Ge
  • C#怎么使用Thrift作为RPC框架
    这篇文章主要讲解了“C#怎么使用Thrift作为RPC框架”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么使用Thrift作为RPC框架”吧!完善开发工具通过nuget在vs2019中...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作