• 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....
  • 相关阅读:
    (四十九)Quartz2D自定义控件
    (四十八)Quartz2D引擎进阶
    (四十七)Quartz2D引擎初步
    (四十六)内存管理的复习
    (四十五)Modal 模态窗口 -遮盖
    (四十四)TabBarController和NagivationController配合
    (四十三)UITabBarController和AppDelegate的一些细节
    (四十二)tableView的滑动编辑和刷新 -局部刷新和删除刷新 -待解决问题
    linux命令——svn分支创建、合并
    C++异常处理
  • 原文地址:https://www.cnblogs.com/iplus/p/4489940.html
Copyright © 2020-2023  润新知