`
hanqunfeng
  • 浏览: 1541115 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python&Thrift--Server&Client

 
阅读更多

thrift目前只支持python2.6+,但不支持3.XX版本。

thrift下载:http://thrift.apache.org/

安装thrift:

./configure
make
make install

 安装python的thrift组件

cd /usr/local/thrift-0.9.1/lib/py
python setup.py install

 

thrift模版文件PythonService.thrift

service PythonService{  
	string get(1:i32 id)  
	i32 remove(1:i32 id)  
}  

 

生成python文件

thrift --gen py PythonService.thrift

将gen-py/PythonService路径下的全部文件拷贝到自己的项目路径下,比如PythonThrift\servicePy

 

server端:

PythonThrift\server\PythonServiceServer.py

# coding=utf-8
'''
Created on 2013-9-22

@author: hanqunfeng
'''

import sys
sys.path.append('../') #导入上下文环境

from servicePy import  PythonService
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.protocol import TCompactProtocol
from thrift.server import TServer


import socket
# 实现类
class PythonServiceServer:
     def get(self, id):
         print socket.gethostbyname(socket.gethostname())
         return "get=="+str(id)
     
     def remove(self, id):
         print socket.gethostbyname(socket.gethostname())
         return id
     
handler = PythonServiceServer()
# 注册实现类
processor = PythonService.Processor(handler)
transport = TSocket.TServerSocket('localhost',30303)
tfactory = TTransport.TBufferedTransportFactory()
# pfactory = TBinaryProtocol.TBinaryProtocolFactory()
pfactory = TCompactProtocol.TCompactProtocolFactory()

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

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

 

client端:

PythonThrift\client\PythonServiceClient.py

# coding=utf-8
'''
Created on 2013-9-22

@author: hanqunfeng
'''

import sys
sys.path.append('../') #导入上下文环境

from servicePy import  PythonService
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.protocol import TCompactProtocol

def pythonServerExe():
    try:
        transport = TSocket.TSocket('localhost', 30303) 
        transport = TTransport.TBufferedTransport(transport)
        # protocol = TBinaryProtocol.TBinaryProtocol(transport)
        protocol = TCompactProtocol.TCompactProtocol(transport)
        client = PythonService.Client(protocol)
        transport.open()
        print "The return value is : " 
        print client.remove(12)
        print client.get(100)
        print "............"
        transport.close()
    except Thrift.TException, tx:
        print '%s' % (tx.message)
        
        
if __name__ == '__main__':
    pythonServerExe()

 

分享到:
评论

相关推荐

    Thrift--JSClient

    由于压缩包文件名称为“ThriftServer”,我们可以推测这可能包含了Thrift服务端的相关代码或者示例。然而,由于没有具体的内容,这部分只能是推测,实际的学习资源需要参考提供的博客链接。总的来说,这篇博客应该是...

    Thrift-java学习小结

    Thrift是一种远程过程调用(RPC)框架,它通过定义一种中间描述文件(.thrift),可以生成多种编程语言的代码,如Java、Python、C++等。这种跨语言的能力使得开发多语言服务变得简单,同时Thrift还提供了一种轻量级...

    thrift php教程thrift-tutorial-php-master.zip

    Thrift通过定义一种中间表示(IDL,接口定义语言),允许开发者在多种编程语言之间进行通信,如C++, Java, Python, PHP等。在本教程"thrift php教程thrift-tutorial-php-master.zip"中,我们将深入学习如何使用...

    php_thrift_python安装测试记录

    from thrift.server import TServer from thrift.transport import TSocket from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol class MyServiceImpl(MyService.Iface): def ...

    thrift 的 java 和 python结合例子

    在这个"thrift的java和python结合例子"中,我们将探讨如何使用Thrift在Java和Python之间建立通信。 首先,Thrift通过定义接口描述文件(.thrift)来规范服务的接口。这个文件使用Thrift IDL(Interface Description...

    thrift-python-java:一个简单的基于Java的Thrift Service服务器和一个Java&Python客户端

    cd java-server-client mvn test -Pserver 此命令将在端口9090上运行服务器 运行Java客户端 cd java-server-client mvn test -Pclient 运行Python客户端 首先,设置所需的依赖项 git clone ...

    Thrift中实现Java与Python的RPC互相调用示例代码.rar

    在本示例中,我们将探讨如何使用Thrift在Java和Python之间实现RPC(Remote Procedure Call)的互相调用。 首先,我们需要了解Thrift IDL。在Thrift IDL文件中,我们可以定义服务接口、数据结构(如struct)和常量。...

    linux下安装和测试thrift

    from thrift.server import TServer from thrift.protocol import TBinaryProtocol class TestHandler: def add(self, num1, num2): return num1 + num2 handler = TestHandler() processor = test.TestService....

    python操作hbase

    python PythonServer.py python PythonClient.py ``` 上述命令会生成Python客户端和服务端代码,并运行它们。 ##### 操作HBase 接下来,我们将展示如何使用Python操作HBase数据库。 1. **启动HBase服务**: ```...

    python使用thrift教程的方法示例

    ### Python使用Thrift教程的方法示例 #### 一、前言 Thrift 是由 Apache 开发的一款用于构建可扩展的跨语言服务开发平台的框架。它不仅提供了接口定义语言(IDL),还支持多种编程语言,使得不同语言编写的组件能够...

    thrift python example

    安装Thrift的Python绑定后,运行`thrift -gen py example.thrift`,这将生成一个`example_gen`目录,其中包含了Python客户端和服务器端的代码。 在`example_gen/example`模块中,你会找到`ExampleService`的客户端...

    python实现的RPC例子

    在这个例子中,我们将深入探讨如何使用Python实现RPC,特别关注Thrift库,这是一个跨语言的服务开发框架。 Thrift是由Facebook开发的开源框架,它允许创建高效的、可扩展的、跨语言的服务。Thrift通过定义一种中间...

    采用java操作thrift代码示例

    6. **运行**:现在,你可以先启动服务器(`ThriftServer.java`),然后运行客户端(`ThriftClient.java`)。客户端将向服务器发送请求,并打印出服务器返回的问候语。 以上是基本的Thrift使用步骤。在实际项目中,...

    通过thrift使用c++访问hbase

    4. **运行程序**: 使用`./DemoClient localhost 9090`运行程序,这里的9090是ThriftServer的默认端口。 **四、Windows系统下Thrift安装** 1. **编译boost库**: - 下载boost库,解压到指定目录。 - 运行Visual ...

    Thrift的Python版本ThriftPy.zip

    ThriftPy 是 Apache Thrift 的 Python 语言移植版本。 服务器端示例代码: import thriftpy from thriftpy.rpc import make_server pingpong = thriftpy.load("pingpong.thrift") class Dispatcher(object)...

    Thrift使用示例代码

    Thrift支持多种语言,包括C++, Java, Python, PHP, C#, Ruby等,这使得跨语言服务的开发变得更加容易。同时,Thrift还提供了多种传输层和协议选择,以适应不同的网络环境和性能需求。 总结来说,Thrift是一个强大的...

    thrift 小试牛刀

    同样地,对于Java示例,通过`ant`工具编译生成的Java代码,之后运行`./JavaServer`和`./JavaClient simple`启动服务端和客户端。 **知识点五:Thrift的应用场景与扩展资源** Thrift不仅适用于构建分布式系统和...

    thrift详解

    此外,Thrift 支持多种主流编程语言,包括 C++、Java、Python、PHP、Ruby 等,这为跨语言项目提供了极大的便利性。 #### 优点总结: 1. **跨语言支持**:Thrift 支持广泛的编程语言,使得开发者可以在不同的技术栈...

    Thrift demo

    Thrift 允许开发者定义服务接口和数据结构,然后自动生成代码来实现这些接口和服务,支持多种编程语言,如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa 等。 **Thrift 模型详解:** 1. **...

Global site tag (gtag.js) - Google Analytics