博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thrift实例:python实现
阅读量:5926 次
发布时间:2019-06-19

本文共 2251 字,大约阅读时间需要 7 分钟。

hot3.png

 

编译版本: python 2.7+, thrift-0.10.0.exe

参考文档: 

http://www.tuicool.com/articles/FnY3eiQ

http://www.cnblogs.com/enternal/p/5275455.html

https://my.oschina.net/u/780876/blog/691293

https://my.oschina.net/michao/blog/550416

 

项目目录结构

<项目名>:

    test: 测试代码包

    ds: 数据结构包,thrift生成的py放在这里

    thrift: thrift文件存储目录

 

代码

helloworld.thrift

#helloworld.thrift#建议设定namespacenamespace java org.sl.thriftnamespace py slthriftservice Hello  {    string helloString(1:string word)}

 

生成python代码 (windows下,需要下载thrift编译器, http://apache.fayea.com/thrift/0.10.0/thrift-0.10.0.exe,建议改个名)

thrift --gen py -out ../ds helloworld.thrift

执行后,会在ds目录下生成 (子目录slthrift)python代码

 

test目录下,python 测试代码

thriftserver.py

#!/usr/bin/env python# -*- encoding: utf-8 -*-__author__ = 'shanl'import sysreload(sys)sys.setdefaultencoding('utf-8')sys.path.append('../ds/slthrift') #注意这里from slthrift import Hellofrom thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocolfrom thrift.server import TServerSERVICE_CFG = {    'ip': '0.0.0.0',  #向所有ip开放    'port': 9000}class HelloHandler(Hello.Iface):    def helloString(self, word):        ret = "Received: " + word        return rethandler = HelloHandler()processor = Hello.Processor(handler)transport = TSocket.TServerSocket(SERVICE_CFG['ip'], SERVICE_CFG['port'])tfactory = TTransport.TBufferedTransportFactory()pfactory  = TBinaryProtocol.TBinaryProtocolFactory()server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)print "thrift server listen in '%s:%s'." % (SERVICE_CFG['ip'], SERVICE_CFG['port'])server.serve()print "done!"

 

thriftclient.py

#!/usr/bin/env python# -*- encoding: utf-8 -*-__author__ = 'shanl'import sysreload(sys)sys.setdefaultencoding('utf-8')sys.path.append('../ds/slthrift')from slthrift import Hellofrom thrift.transport import TSocketfrom thrift.protocol import TBinaryProtocolimport randomSERVICE_CFG = {    'ip': '127.0.0.1',    'port': 9000}transport = TSocket.TSocket(SERVICE_CFG['ip'], SERVICE_CFG['port'])protocol = TBinaryProtocol.TBinaryProtocol(transport)client = Hello.Client(protocol)transport.open()for i in xrange(100):    print client.helloString('%s' % (random.randint(1000, 9999)))transport.close()

 

转载于:https://my.oschina.net/tangcoffee/blog/882540

你可能感兴趣的文章
MFC多语言实现方法
查看>>
android键盘弹出,聊天背景不变形
查看>>
delphi中利用Indy的TIdFtp控件实现FTP协议
查看>>
基于开源流程引擎Activiti5的工作流开发平台BPMX3
查看>>
Win7 Ubuntu13.04互通(win7下用vbox安装Ubuntu)
查看>>
移动终端测试进化论
查看>>
2015年网页设计最佳颜色搭配的9种选择
查看>>
使用bat来运行cygwin,执行脚本(命令)
查看>>
Gallery with Video
查看>>
ssh公钥免密码登录
查看>>
开源 免费 java CMS - FreeCMS1.3-数据对象-mail
查看>>
开源 java CMS - FreeCMS2.2 系统配置
查看>>
如何快速正确的安装 Ruby, Rails 运行环境
查看>>
ListView
查看>>
Qualcomm平台camera调试移植入门
查看>>
[Android]关于IntentService
查看>>
scrapy
查看>>
elasticsearch2.2之javaApi
查看>>
HashMap是如何工作的
查看>>
敏捷软件开发之结对编程
查看>>