• 【Thrift一】Thrift安装部署


    Thrift安装部署

    下载源码包

    wget http://apache.fayea.com/thrift/0.9.3/thrift-0.9.3.tar.gz

    安装g++

    centos:yum install gcc gcc-c++

    如果没有安装g++,无法编译

    解压Thrift安装包

    tar -xvf thrift-0.9.3.tar.gz

    安装boost开发工具

    1. 进入thrift-0.9.3目录

    2. 运行命令:yum install boost-devel.x86_64

    3. 运行命令:yum install boost-devel-static

    4. 运行命令:./configure --with-cpp --with-boost --with-python --without-csharp --with-java --without-erlang --without-perl --with-php --without-php_extension --without-ruby --without-haskell --without-go

    5. 编译,命令:make

    6. 编译完成之后安装,命令:make install

    7. 出现thrift命令提示表示Thrift安装成功

    测试(python版)

    1. 创建RecSys.thrift文件
    service RecSys {
        string rec_data(1:string data)
    }
    
    1. 创建server.py文件
    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import sys
    sys.path.append('gen-py')
    
    from thrift.transport import TSocket
    from thrift.transport import TTransport
    from thrift.protocol import TBinaryProtocol
    from thrift.server import TServer
    
    from RecSys import RecSys
    from RecSys.ttypes import *
    
    class RecSysHandler(RecSys.Iface):
        def rec_data(self, a):
            print "Receive: %s" %(a)
            return "ok"
    
    if __name__ == "__main__":
    
        # 实例化handler
        handler = RecSysHandler()
    
        # 设置processor
        processor = RecSys.Processor(handler)
    
        # 设置端口
        transport = TSocket.TServerSocket('localhost', port=9900)
    
        # 设置传输层
        tfactory = TTransport.TBufferedTransportFactory()
    
        # 设置传输协议
        pfactory = TBinaryProtocol.TBinaryProtocolFactory()
    
        server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)
    
        print 'Starting the server...'
        server.serve()
        print 'done'
    
    1. 创建client.py文件
    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import sys
    sys.path.append("gen-py") // 将第4步骤产生的目录加载进来
    
    from thrift import Thrift
    from thrift.transport import TSocket
    from thrift.transport import TTransport
    from thrift.protocol import TBinaryProtocol
    
    from RecSys import RecSys
    # from demo.ttypes import *
    
    try:
        # Make Socket
        # 建立socket, IP 和port要写对
        transport = TSocket.TSocket('localhost', 9900)
    
        # Buffering is critical. Raw sockets are very slow
        # 选择传输层,这块要和服务器的设置一样
        transport = TTransport.TBufferedTransport(transport)
    
        # Wrap in a protocol
        # 选择传输协议,这个也要和服务器保持一致,负责无法通信
        protocol = TBinaryProtocol.TBinaryProtocol(transport)
    
        client = RecSys.Client(protocol)
    
        # Connect!
        transport.open()
    
        # Call server services
        rst = client.rec_data("are you ok!")
        print rst
    
        # close transport
        transport.close()
    except Thrift.TException, ex:
        print "%s" % (ex.message)
    
    1. 运行命令:thrift --gen py RecSys.thrift
      • 运行完之后会在当前目录生成一个gen-py的文件夹,里面有模块的名字之类的东西

      • 运行命令:python server.py,启动服务端

      • 运行命令:python client.py,启动客户端,并能收到服务端发出的信息

  • 相关阅读:
    Xlua侧如何接受CSharp侧的可变参数
    C# 中如何精确地测量一段逻辑的执行时间
    C#中设计一个 ListPool 的方案
    unity中获取设备的信息
    Oracle-游标-取钱-存钱-转账
    Oracle 存储过程与java调用
    PL/SQL loop,while.for循环
    PL/SQL if case when
    PL/SQL %type %rowtype
    Oracle PLSQL入门
  • 原文地址:https://www.cnblogs.com/screen/p/9074862.html
Copyright © 2020-2023  润新知