安装thriftapt-get install libboost-dev libevent-dev python-dev automake pkg-config libtool flex bison sun-java6-jdkwget tar zxvf thrift-0.8.0.tar.gzcd thrift-0.8.0./configuremakesudo make installsudo pip install thrift

编辑接口文件 hellowworld.thrift

service HelloWorld {

    string ping(),

    string say(1:string msg)

}

编辑 server.py

#!/usr/bin/env python

 

import socket

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

 

class HelloWorldHandler:

  def ping(self):

    return "pong"

 

  def say(self, msg):

    ret = "Received: " + msg

    print ret

    return ret

 

handler = HelloWorldHandler()

processor = HelloWorld.Processor(handler)

transport = TSocket.TServerSocket("localhost", 9090)

tfactory = TTransport.TBufferedTransportFactory()

pfactory = TBinaryProtocol.TBinaryProtocolFactory()

 

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

 

print "Starting thrift server in python..."

server.serve()

print "done!"

编辑 client.py

#!/usr/bin/env python

 

import sys

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

 

from helloworld import HelloWorld

 

from thrift import Thrift

from thrift.transport import TSocket

from thrift.transport import TTransport

from thrift.protocol import TBinaryProtocol

 

try:

  transport = TSocket.TSocket('localhost', 9090)

  transport = TTransport.TBufferedTransport(transport)

  protocol = TBinaryProtocol.TBinaryProtocol(transport)

  client = HelloWorld.Client(protocol)

  transport.open()

 

  print "client - ping"

  print "server - " + client.ping()

 

  print "client - say"

  msg = client.say("Hello!")

  print "server - " + msg

 

  transport.close()

 

except Thrift.TException, ex:

  print "%s" % (ex.message)

生成目录

thrift --gen py helloworld.thrift

python server.py

python client.py