> CentOS > CentOS教程 >

CentOS thrift python demo

编辑接口文件 hellowworld.thrift
[python] view plaincopy
service HelloWorld {  
    string ping(),  
    string say(1:string msg)  
}  
 
编辑 server.py
[python] view plaincopy
#!/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
[python] view plaincopy
#!/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)  
 
 
运行:
[plain] view plaincopy
thrift --gen py helloworld.thrift  
python server.py    
python client.py  #这个分一个窗口运行  
 
 
如果修改里面的一个方法或者增加一个调用方法的话,需要在 helloword.thrift 里面定义函数及参数。
在服务端运行代码 thrift -r --gen py helloworld.thrift 
重新生成 gen-py 文件夹,将里面的代码拷贝到客户端的服务器。
(责任编辑:IT)