zoukankan      html  css  js  c++  java
  • 笔记:Ubuntu下快速开始使用Python Thrift | 孙立文的博客

    笔记:Ubuntu下快速开始使用Python Thrift | 孙立文的博客

    笔记:Ubuntu下快速开始使用Python Thrift

     
     
     


    2



    本文介绍如何在Ubuntu 10.04下安装Apache Thrift并用Python写一个Demo。

    apt-get install libboost-dev libevent-dev python-dev automake pkg-config libtool flex bison sun-java6-jdk
    wget http://www.apache.org/dist//thrift/0.8.0/thrift-0.8.0.tar.gz
    tar zxvf thrift-0.8.0.tar.gz
    cd thrift-0.8.0
    ./configure
    make
    sudo make install
    sudo 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

    参考: Thrift the missing guide
  • 相关阅读:
    夯实Java基础系列23:一文读懂继承、封装、多态的底层实现原理
    夯实Java基础系列22:一文读懂Java序列化和反序列化
    夯实Java基础系列21:Java8新特性终极指南
    夯实Java基础系列20:从IDE的实现原理聊起,谈谈那些年我们用过的Java命令
    FireDAC的SQLite初探
    delphi7 TRichView 安装
    Delphi7 GDI+学习
    Delphi7画好看的箭头线
    python swap
    pycharm **教程 大家快激活吧
  • 原文地址:https://www.cnblogs.com/lexus/p/2697037.html
Copyright © 2011-2022 走看看