zoukankan      html  css  js  c++  java
  • CentOS thrift python demo

    编辑接口文件 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  #这个分一个窗口运行


    如果修改里面的一个方法或者增加一个调用方法的话,需要在 helloword.thrift 里面定义函数及参数。

    在服务端运行代码 thrift -r --gen py helloworld.thrift 

    重新生成 gen-py 文件夹,将里面的代码拷贝到客户端的服务器。

    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    [转]Xcode4.5.1破解iOS免证书开发真机调试与ipa发布
    [转]QT多线程异步调用
    [转]Clone Object as instance in OgreMax
    [转]Texture atlas extension to the RTSS
    [转]QT中线程调用GUI主线程控件的问题
    c语言打印菱形解析
    今天开始第一次win32汇编之旅 先搭建编程环境吧
    MSHFlexGrid控件
    用1602模拟电子钟功能
    Combobox控件使用
  • 原文地址:https://www.cnblogs.com/iplus/p/4489940.html
Copyright © 2011-2022 走看看