thrift开发的例子(一)---python为例
来源:互联网 发布:淘宝好的第三方活动 编辑:程序博客网 时间:2024/06/04 18:58
1.编写thrift接口文件
2.thrift --gen 开发语言 thrift接口描述文件
如:thrift --gen cpp student.thrift
thrift --gen py student.thrift
3.利用生成的文件代码进行开发
1.简单的例子
struct employee{
1:i16 id,
2:string name
}
service HelloWorld{
string ping(),
string sayHello(1:string msg,2:employee e)
}
2.thrift-0.9.2.exe --gen py a.thrift (linux 下thrift --gen py a.thrift)
3.开发例子
客户端c.py
#coding=utf-8
import sys
sys.path.append('./gen-py')
from a.HelloWorld import Client
from a.ttypes import employee
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
transport = TSocket.TSocket('localhost', 9090)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Client(protocol)
transport.open()
print client.ping()
e = employee(1,'李小四')
print client.sayHello("!",e)
transport.close()
服务器端开发s.py
#!/usr/bin/env python
import socket
import sys
sys.path.append('./gen-py')
from a.HelloWorld import Processor
from a.ttypes import *
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
class HelloHandler:
def ping(self):
return "ping"
def sayHello(self, msg, e):
print msg
print e.id
print e.name
return 'hello '+e.name
handler = HelloHandler()
processor = 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!"
附录:thrift数据类型规则
【基础类型】
(1)bool:布尔类型(true或false)
(2)byte:8位有符号整数
(3)i16:16位有符号整数
(4)i32:32位有符号整数
(5)i64:64位有符号整数
(6)double:64位浮点数
(7)string:文本字符串,使用UTF-8编码
【容器】
(1)list容器:一个元素可重复的有序列表。会被转换成C++中的vector,Java中的ArrayList,脚本语言中的数组等。
(2)set容器:一个元素不可重复的无序集合。会转换成C++中的set,Java中的HashSet、Python中的Set等。(熟悉PHP的同学可能会问“PHP并不支持set类型,怎么办”,在PHP语言中,
thrift会将set容器转换成List。)
(3)map容器:一个含有多个key:value键值对的结构。会被转换成C++中的map,Java中的HashMap,PHP中的关联数组,Python/Ruby中的dictionary等。
【结构体】
struct User{
1:i32 id,
2:string name
}
0 0
- thrift开发的例子(一)---python为例
- thrift开发的例子(二)---cpp为例
- python thrift简单例子
- 【Thrift】python 例子
- Thrift交流(一)简单的Thrift
- Thrift交流(一)简单的Thrift
- Thrift交流(一)简单的Thrift
- Thrift交流(一)简单的Thrift
- linux 添加python 模块搜索路径(以thrift为例)
- 一个Thrift的简单例子
- Thrift源码分析(八)--总结加一个完整的可运行的Thrift例子
- Thrift的一些总结(Java开发)
- thrift学习(一)
- Thrift指南 (一)
- 分享下我学习Thrift的入门例子helloworld,客户端用php,服务端用python:
- Thrift for python的安装
- Thrift开发环境的配置
- thrift一个例子 (编译c++ 参数)
- vi和vim使用(二)
- Android ListView.setEmptyView
- 9——PHP循环结构foreach用法
- 深入理解Docker Volume(二)
- 压力测试和性能测试的区别
- thrift开发的例子(一)---python为例
- C3P0数据源
- Probability to form a triangle by splitting a stick
- java/android 设计模式学习笔记(5)---对象池模式
- scons是一个Python写的自动化构建工具,和GNU make相比优点明显
- BZOJ 1001 构造对偶图 + dijkstra_heap
- 初次来CSDN!
- IM分布式压力测试工具设计(类loadrunner)
- Spark函数讲解:checkpoint