安装thrift 从官网下载 然后按照./configure,make,make install 方式进行安装,其他系统可以参照官网http://thrift.apache.org/docs/install/
定义thrift文件, 相当于通讯双方的接口定义,
bool boolean, one byte * i8 (byte) signed 8-bit integer * i16 signed 16-bit integer * i32 signed 32-bit integer * i64 signed 64-bit integer * double 64-bit floating point value * string string * binary blob (byte array) * map<t1,t2> map from one type to another * list<t1> ordered list of one type * set<t1> set of unique elements of one type
用thrift生成关于thrift定义的代码,对应各种语言,我这主要是python,也可以其他的c++,java,命令是thrift --gen <language> <thrift filename>
server和client的编写,server要多考虑无阻塞,多进程,保证服务正常,调用thrift生成的类,对应定义好的数据类型。
def init_handler(): sub-process init handler signal.signal(signal.sigint, signal.sig_dfl) signal.signal(signal.sigterm, signal.sig_dfl) signal.signal(signal.sighup, signal.sig_dfl) signal.signal(signal.sigusr1, debug)def main(): the main entrance port = sys.argv[1] signal.signal(signal.sigint, exit_signal_handler) signal.signal(signal.sigterm, exit_signal_handler) signal.signal(signal.sighup, exit_signal_handler) signal.signal(signal.sigusr1, debug) gc.set_threshold(20000, 10, 10) handler = maitreyahandler() processor = maitreya.processor(handler) transport = tsocket.tserversocket(port=port) tfactory = ttransport.tbufferedtransportfactory() pfactory = tbinaryprotocol.tbinaryprotocolfactory() # server = tprocesspoolserver(processor, transport, tfactory, pfactory) server = tgeventserver.tgeventprocesspoolserver(processor, transport, tfactory, pfactory) server.setnumworkers(worker_num) server.setpostforkcallback(init_handler) print server started... server.serve()
以上就是解析tcp交互thrift的使用实例的详细内容。
