windows下thrift的使用(python)

windows下thrift的使用(python)

1、下载thrift,下载地址:http://archive.apache.org/dist/thrift/0.9.3/

2、在编写python的thrift代码时,需要先安装thrift module,下载路径:https://pypi.python.org/pypi/thrift/0.9.1

3、安装thrift:在C盘新建一个Thtift文件夹,将下载的thrift-0.9.3.exe重新命名为thrift.exe后放到Thtift文件夹下,将该路径添加到环境变量,检验是否安装成功:在命令行中输入:

<span>windows下thrift的使用(python)</span>

即可以看到安装后的版本信息。

4、thrift 采用IDL(Interface Definition Language)来定义通用的服务接口,并通过生成不同的语言代理实现来达到跨语言、平台的功能。在thrift的IDL中可以定义以下一些类型:基本数据类型,结构体,容器,异常、服务。

thrift脚本:

const string HELLO_YK = “yk”
service HelloWorld {
void ping(),
string sayHello(),
string sayMsg(1:string msg)
}

thrift脚本通过Thrift编辑器生成所要求的python开发语言代码。即:

  <span>windows下thrift的使用(python)</span>

 

  5、Thrift是一个典型的CS结构,客户端和服务端可以使用不同的语言开发。本文以python为例:

PythonServer.py:

import sys
sys.path.append('./gen-py')
 
from helloworld import HelloWorld
from helloworld.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 HelloWorldHandler:
  def __init__(self):
    self.log = {}

  def ping(self):
    print "ping()"

  def sayHello(self):
    print "sayHello()"
    return "say hello from " + socket.gethostbyname(socket.gethostname())

  def sayMsg(self, msg):
    print "sayMsg(" + msg + ")"
    return "say " + msg + " from " + socket.gethostbyname(socket.gethostname())

handler = HelloWorldHandler()
processor = HelloWorld.Processor(handler)
transport = TSocket.TServerSocket('127.0.0.1',30303)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()

server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)

print "Starting python server..."
server.serve()
print "done!"

  PythonClient.py

import sys
sys.path.append('./gen-py')

from helloworld import HelloWorld
from helloworld.ttypes import *
from helloworld.constants import *

from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol

try:
  # Make socket
  transport = TSocket.TSocket('127.0.0.1', 30303)

  # Buffering is critical. Raw sockets are very slow
  transport = TTransport.TBufferedTransport(transport)

  # Wrap in a protocol
  protocol = TBinaryProtocol.TBinaryProtocol(transport)

  # Create a client to use the protocol encoder
  client = HelloWorld.Client(protocol)

  # Connect!
  transport.open()

  client.ping()
  print "ping()"

  msg = client.sayHello()
  print msg
  msg = client.sayMsg(HELLO_YK)
  print msg

  transport.close()

except Thrift.TException, tx:
  print "%s" % (tx.message)

 运行结果:

<span>windows下thrift的使用(python)</span>

 

<span>windows下thrift的使用(python)</span>

 

文件下载:

 相关文件以及测试例子代码

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119491.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月19日 上午8:00
下一篇 2021年11月19日 上午9:00


相关推荐

  • “OpenClaw”走红!上市公司抢着“养龙虾”!

    “OpenClaw”走红!上市公司抢着“养龙虾”!

    2026年3月13日
    3
  • 区块变速运动模拟案例

    区块变速运动模拟案例区块变速运动模拟案例 红色区块点击按钮实现区块运动速度逐渐减小到 left 值为 300px 停止 1 div 的 style 属性 div1 width 200px height 100px background red position absolute left 0 实现该功能 2 div 的 style 属性 div1 width 200px height 100px ba

    2025年11月22日
    5
  • unicode下 CString 转 string

    unicode下 CString 转 stringunicode 下 CString 转 stringCStrin L ABC intn path GetLength intlen WideCharToMu CP ACP 0 path path GetLength NULL 0 NULL NULL char pTest newchar len 1 Wide

    2026年3月16日
    2
  • T-SQL教程_sql server 2008使用

    T-SQL教程_sql server 2008使用文章目录T-SQL基础技术基本语法格式代码准备:(可以按照我的实例自行建立数据库)1、投影查询a、投影指定的列b、投影全部列c、修改查询结果的列标题d、去掉重复行2、选择查询a.表达式比较b.范围比较c.模式匹配d.空值使用代码示例:3、连接查询a.连接谓词b.以JOIN关键字指定的连接(1)内连接(2)外连接4、统计计算5、排序查询6、子查询T-SQL基础技术T-SQL语言中最重要的部分是它…

    2022年8月18日
    9
  • 全网最全面详细的Cursor使用教程:从入门到精通(2025年 Java插件)

    全网最全面详细的Cursor使用教程:从入门到精通(2025年 Java插件)

    2026年3月16日
    2
  • Linux下使用fdisk扩展分区容量

    Linux下使用fdisk扩展分区容量我们管理的服务器可能会随着业务量的不断增长造成磁盘空间不足的情况 比如 共享文件服务器硬盘空间不足 在这个时候我们就需要增加磁盘空间 来满足线上的业务 又或者我们在使用 linux 的过程中 有时会因为安装系统时分区不当导致有的分区空间不足 而有的分区空间过剩的情况 都可以是使用 fdisk 分区工具来动态调整分区的大小

    2026年3月16日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号