Thrift 笔记
参考地址: https://blog.youkuaiyun.com/dutsoft/article/details/71178655
1、demo1
构造idl文件:IDL设计参看地址
IDL文件demo
hello.thrift文件的内容如下
service HelloService {
string say(1:string msg)
}
server.py文件内容如下
import socket
import sys
from hello import HelloService
from hello.ttypes import *
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
# hello服务处理(handler)类
class HelloServiceHandler(object):
def say(self, msg): # 函数名必须与hello.thrift中定义服务的函数名一样
ret = "Received: " + msg
print ret
return ret
handler = HelloServiceHandler() #构建处理的对象
processor = HelloService.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() # 启动服务,并持续接收client发送的数据
print "done!"
client.py文件内容如下
import sys
from hello import HelloService
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) #连接服务器的socket
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = HelloService.Client(protocol)
transport.open()
print "client - say"
msg = client.say("Hello!")
print "server - " + msg
transport.close()
except Thrift.TException, ex:
print "%s" % (ex.message)
执行的时候 首先运行 server.py脚本,启动服务。然后执行client.py 模拟客户端向服务器发送请求。
2、demo2
IDL文件为i18n_get_authors_by_keywords.thrift ,文件内容如下
include "../base.thrift"
namespace go i18n_get_authors_by_keywords
namespace py i18n_get_authors_by_keywords
struct HiRequest {
1: string Name, // 前面的编号是唯一标示,无具体含义。
255: optional base.Base Base,
}
struct HiResponse {
1: string Resp,
255: base.BaseResp BaseResp,
}
service HiService {
HiResponse Hi(1: HiRequest req)
}
执行
thrift -r --gen py i18n_get_authors_by_keywords.thrift
可以在IDL文件的同级目录下生成gen-py目录
其中base/ttypes.py内是IDL文件的include中生成的类
#
# Autogenerated by Thrift Compiler (0.11.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
# options string: py
#
from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
from thrift.protocol.TProtocol import TProtocolException
from thrift.TRecursive import fix_spec
import sys
from thrift.transport import TTransport
all_structs = []
class TrafficEnv(object):
"""
Attributes:
- Open
- Env
"""
def __init__(self, Open=False, Env="", ):
self.Open = Open
self.Env = Env
def read(self, iprot):
if iprot._fast_decode is not None and isinstance(iprot.trans,
TTransport.CReadableTransport) and self.thrift_spec is not None:
iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
return
iprot.readStructBegin()
while True:
(fname, ftype, fid) = iprot.readFieldBegin()
if ftype == TType.STOP:
break
if fid == 1:
if ftype == TType.BOOL:
self.Open = iprot.readBool()
else:
iprot.skip(ftype)
elif fid == 2:
if ftype == TType.STRING:
self.Env = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
iprot.readStructEnd()
def write(self, oprot):
if oprot._fast_encode is not None and self.thrift_spec is not None:
oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
return
oprot.writeStructBegin('TrafficEnv')
if self.Open is not None:
oprot.writeFieldBegin('Open', TType.BOOL, 1)
oprot.writeBool(self.Open)
oprot.writeFieldEnd()
if self.Env is not None:
oprot.writeFieldBegin('Env', TType.STRING, 2)
oprot.writeString(self.Env.encode('utf-8') if sys.version_info[0] == 2 else self.Env)
oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
def validate(self):
return
def __repr__(self):
L = ['%s=%r' % (key, value)
for key, value in self.__dict__.items()]
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
def __eq__(self, other):
return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
def __ne__(self, other):
return not (self == other)
class Base(object):
"""
Attributes:
- LogID
- Caller
- Addr
- Client
- TrafficEnv
- Extra
"""
def __init__(self, LogID="", Caller="", Addr="", Client="", TrafficEnv=None, Extra=None, ):
self.LogID = LogID
self.Caller = Caller
self.Addr = Addr
self.Client = Client
self.TrafficEnv = TrafficEnv
self.Extra = Extra
def read(self, iprot):
if iprot._fast_decode is not None and isinstance(iprot.trans,
TTransport.CReadableTransport) and self.thrift_spec is not None:
iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
return
iprot.readStructBegin()
while True:
(fname, ftype, fid) = iprot.readFieldBegin()
if ftype == TType.STOP:
break
if fid == 1:
if ftype == TType.STRING:
self.LogID = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
elif fid == 2:
if ftype == TType.STRING:
self.Caller = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
elif fid == 3:
if ftype == TType.STRING:
self.Addr = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
elif fid == 4:
if ftype == TType.STRING:
self.Client = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
elif fid == 5:
if ftype == TType.STRUCT:
self.TrafficEnv = TrafficEnv()
self.TrafficEnv.read(iprot)
else:
iprot.skip(ftype)
elif fid == 6:
if ftype == TType.MAP:
self.Extra = {}
(_ktype1, _vtype2, _size0) = iprot.readMapBegin()
for _i4 in range(_size0):
_key5 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
_val6 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
self.Extra[_key5] = _val6
iprot.readMapEnd()
else:
iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
iprot.readStructEnd()
def write(self, oprot):
if oprot._fast_encode is not None and self.thrift_spec is not None:
oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
return
oprot.writeStructBegin('Base')
if self.LogID is not None:
oprot.writeFieldBegin('LogID', TType.STRING, 1)
oprot.writeString(self.LogID.encode('utf-8') if sys.version_info[0] == 2 else self.LogID)
oprot.writeFieldEnd()
if self.Caller is not None:
oprot.writeFieldBegin('Caller', TType.STRING, 2)
oprot.writeString(self.Caller.encode('utf-8') if sys.version_info[0] == 2 else self.Caller)
oprot.writeFieldEnd()
if self.Addr is not None:
oprot.writeFieldBegin('Addr', TType.STRING, 3)
oprot.writeString(self.Addr.encode('utf-8') if sys.version_info[0] == 2 else self.Addr)
oprot.writeFieldEnd()
if self.Client is not None:
oprot.writeFieldBegin('Client', TType.STRING, 4)
oprot.writeString(self.Client.encode('utf-8') if sys.version_info[0] == 2 else self.Client)
oprot.writeFieldEnd()
if self.TrafficEnv is not None:
oprot.writeFieldBegin('TrafficEnv', TType.STRUCT, 5)
self.TrafficEnv.write(oprot)
oprot.writeFieldEnd()
if self.Extra is not None:
oprot.writeFieldBegin('Extra', TType.MAP, 6)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.Extra))
for kiter7, viter8 in self.Extra.items():
oprot.writeString(kiter7.encode('utf-8') if sys.version_info[0] == 2 else kiter7)
oprot.writeString(viter8.encode('utf-8') if sys.version_info[0] == 2 else viter8)
oprot.writeMapEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
def validate(self):
return
def __repr__(self):
L = ['%s=%r' % (key, value)
for key, value in self.__dict__.items()]
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
def __eq__(self, other):
return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
def __ne__(self, other):
return not (self == other)
class BaseResp(object):
"""
Attributes:
- StatusMessage
- StatusCode
- Extra
"""
def __init__(self, StatusMessage="", StatusCode=0, Extra=None, ):
self.StatusMessage = StatusMessage
self.StatusCode = StatusCode
self.Extra = Extra
def read(self, iprot):
if iprot._fast_decode is not None and isinstance(iprot.trans,
TTransport.CReadableTransport) and self.thrift_spec is not None:
iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
return
iprot.readStructBegin()
while True:
(fname, ftype, fid) = iprot.readFieldBegin()
if ftype == TType.STOP:
break
if fid == 1:
if ftype == TType.STRING:
self.StatusMessage = iprot.readString().decode('utf-8') if sys.version_info[
0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
elif fid == 2:
if ftype == TType.I32:
self.StatusCode = iprot.readI32()
else:
iprot.skip(ftype)
elif fid == 3:
if ftype == TType.MAP:
self.Extra = {}
(_ktype10, _vtype11, _size9) = iprot.readMapBegin()
for _i13 in range(_size9):
_key14 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
_val15 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
self.Extra[_key14] = _val15
iprot.readMapEnd()
else:
iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
iprot.readStructEnd()
def write(self, oprot):
if oprot._fast_encode is not None and self.thrift_spec is not None:
oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
return
oprot.writeStructBegin('BaseResp')
if self.StatusMessage is not None:
oprot.writeFieldBegin('StatusMessage', TType.STRING, 1)
oprot.writeString(self.StatusMessage.encode('utf-8') if sys.version_info[0] == 2 else self.StatusMessage)
oprot.writeFieldEnd()
if self.StatusCode is not None:
oprot.writeFieldBegin('StatusCode', TType.I32, 2)
oprot.writeI32(self.StatusCode)
oprot.writeFieldEnd()
if self.Extra is not None:
oprot.writeFieldBegin('Extra', TType.MAP, 3)
oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.Extra))
for kiter16, viter17 in self.Extra.items():
oprot.writeString(kiter16.encode('utf-8') if sys.version_info[0] == 2 else kiter16)
oprot.writeString(viter17.encode('utf-8') if sys.version_info[0] == 2 else viter17)
oprot.writeMapEnd()
oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
def validate(self):
return
def __repr__(self):
L = ['%s=%r' % (key, value)
for key, value in self.__dict__.items()]
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
def __eq__(self, other):
return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
def __ne__(self, other):
return not (self == other)
all_structs.append(TrafficEnv)
TrafficEnv.thrift_spec = (
None, # 0
(1, TType.BOOL, 'Open', None, False,), # 1
(2, TType.STRING, 'Env', 'UTF8', "",), # 2
)
all_structs.append(Base)
Base.thrift_spec = (
None, # 0
(1, TType.STRING, 'LogID', 'UTF8', "",), # 1
(2, TType.STRING, 'Caller', 'UTF8', "",), # 2
(3, TType.STRING, 'Addr', 'UTF8', "",), # 3
(4, TType.STRING, 'Client', 'UTF8', "",), # 4
(5, TType.STRUCT, 'TrafficEnv', [TrafficEnv, None], None,), # 5
(6, TType.MAP, 'Extra', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None,), # 6
)
all_structs.append(BaseResp)
BaseResp.thrift_spec = (
None, # 0
(1, TType.STRING, 'StatusMessage', 'UTF8', "",), # 1
(2, TType.I32, 'StatusCode', None, 0,), # 2
(3, TType.MAP, 'Extra', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None,), # 3
)
fix_spec(all_structs)
del all_structs
i18n_get_authors_by_keywords/ttypes.py内是IDL文件中struct设置的类。
#
# Autogenerated by Thrift Compiler (0.11.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
# options string: py
#
from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
from thrift.protocol.TProtocol import TProtocolException
from thrift.TRecursive import fix_spec
import sys
import base.ttypes
from thrift.transport import TTransport
all_structs = []
class ServiceRequest(object):
"""
Attributes:
- Name
- Base
"""
def __init__(self, Name=None, Base=None,):
self.Name = Name
self.Base = Base
def read(self, iprot):
if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
return
iprot.readStructBegin()
while True:
(fname, ftype, fid) = iprot.readFieldBegin()
if ftype == TType.STOP:
break
if fid == 1:
if ftype == TType.STRING:
self.Name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
elif fid == 255:
if ftype == TType.STRUCT:
self.Base = base.ttypes.Base()
self.Base.read(iprot)
else:
iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
iprot.readStructEnd()
def write(self, oprot):
if oprot._fast_encode is not None and self.thrift_spec is not None:
oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
return
oprot.writeStructBegin('ServiceRequest')
if self.Name is not None:
oprot.writeFieldBegin('Name', TType.STRING, 1)
oprot.writeString(self.Name.encode('utf-8') if sys.version_info[0] == 2 else self.Name)
oprot.writeFieldEnd()
if self.Base is not None:
oprot.writeFieldBegin('Base', TType.STRUCT, 255)
self.Base.write(oprot)
oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
def validate(self):
return
def __repr__(self):
L = ['%s=%r' % (key, value)
for key, value in self.__dict__.items()]
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
def __eq__(self, other):
return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
def __ne__(self, other):
return not (self == other)
class ServiceResponse(object):
"""
Attributes:
- Resp
- BaseResp
"""
def __init__(self, Resp=None, BaseResp=None,):
self.Resp = Resp
self.BaseResp = BaseResp
def read(self, iprot):
if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
return
iprot.readStructBegin()
while True:
(fname, ftype, fid) = iprot.readFieldBegin()
if ftype == TType.STOP:
break
if fid == 1:
if ftype == TType.STRING:
self.Resp = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
else:
iprot.skip(ftype)
elif fid == 255:
if ftype == TType.STRUCT:
self.BaseResp = base.ttypes.BaseResp()
self.BaseResp.read(iprot)
else:
iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
iprot.readStructEnd()
def write(self, oprot):
if oprot._fast_encode is not None and self.thrift_spec is not None:
oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
return
oprot.writeStructBegin('ServiceResponse')
if self.Resp is not None:
oprot.writeFieldBegin('Resp', TType.STRING, 1)
oprot.writeString(self.Resp.encode('utf-8') if sys.version_info[0] == 2 else self.Resp)
oprot.writeFieldEnd()
if self.BaseResp is not None:
oprot.writeFieldBegin('BaseResp', TType.STRUCT, 255)
self.BaseResp.write(oprot)
oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
def validate(self):
return
def __repr__(self):
L = ['%s=%r' % (key, value)
for key, value in self.__dict__.items()]
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
def __eq__(self, other):
return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
def __ne__(self, other):
return not (self == other)
all_structs.append(ServiceRequest)
ServiceRequest.thrift_spec = (
None, # 0
(1, TType.STRING, 'Name', 'UTF8', None, ), # 1
None, # 2
None, # 3
None, # 4
None, # 5
None, # 6
None, # 7
None, # 8
None, # 9
None, # 10
None, # 11
None, # 12
None, # 13
None, # 14
None, # 15
None, # 16
None, # 17
None, # 18
None, # 19
None, # 20
None, # 21
None, # 22
None, # 23
None, # 24
None, # 25
None, # 26
None, # 27
None, # 28
None, # 29
None, # 30
None, # 31
None, # 32
None, # 33
None, # 34
None, # 35
None, # 36
None, # 37
None, # 38
None, # 39
None, # 40
None, # 41
None, # 42
None, # 43
None, # 44
None, # 45
None, # 46
None, # 47
None, # 48
None, # 49
None, # 50
None, # 51
None, # 52
None, # 53
None, # 54
None, # 55
None, # 56
None, # 57
None, # 58
None, # 59
None, # 60
None, # 61
None, # 62
None, # 63
None, # 64
None, # 65
None, # 66
None, # 67
None, # 68
None, # 69
None, # 70
None, # 71
None, # 72
None, # 73
None, # 74
None, # 75
None, # 76
None, # 77
None, # 78
None, # 79
None, # 80
None, # 81
None, # 82
None, # 83
None, # 84
None, # 85
None, # 86
None, # 87
None, # 88
None, # 89
None, # 90
None, # 91
None, # 92
None, # 93
None, # 94
None, # 95
None, # 96
None, # 97
None, # 98
None, # 99
None, # 100
None, # 101
None, # 102
None, # 103
None, # 104
None, # 105
None, # 106
None, # 107
None, # 108
None, # 109
None, # 110
None, # 111
None, # 112
None, # 113
None, # 114
None, # 115
None, # 116
None, # 117
None, # 118
None, # 119
None, # 120
None, # 121
None, # 122
None, # 123
None, # 124
None, # 125
None, # 126
None, # 127
None, # 128
None, # 129
None, # 130
None, # 131
None, # 132
None, # 133
None, # 134
None, # 135
None, # 136
None, # 137
None, # 138
None, # 139
None, # 140
None, # 141
None, # 142
None, # 143
None, # 144
None, # 145
None, # 146
None, # 147
None, # 148
None, # 149
None, # 150
None, # 151
None, # 152
None, # 153
None, # 154
None, # 155
None, # 156
None, # 157
None, # 158
None, # 159
None, # 160
None, # 161
None, # 162
None, # 163
None, # 164
None, # 165
None, # 166
None, # 167
None, # 168
None, # 169
None, # 170
None, # 171
None, # 172
None, # 173
None, # 174
None, # 175
None, # 176
None, # 177
None, # 178
None, # 179
None, # 180
None, # 181
None, # 182
None, # 183
None, # 184
None, # 185
None, # 186
None, # 187
None, # 188
None, # 189
None, # 190
None, # 191
None, # 192
None, # 193
None, # 194
None, # 195
None, # 196
None, # 197
None, # 198
None, # 199
None, # 200
None, # 201
None, # 202
None, # 203
None, # 204
None, # 205
None, # 206
None, # 207
None, # 208
None, # 209
None, # 210
None, # 211
None, # 212
None, # 213
None, # 214
None, # 215
None, # 216
None, # 217
None, # 218
None, # 219
None, # 220
None, # 221
None, # 222
None, # 223
None, # 224
None, # 225
None, # 226
None, # 227
None, # 228
None, # 229
None, # 230
None, # 231
None, # 232
None, # 233
None, # 234
None, # 235
None, # 236
None, # 237
None, # 238
None, # 239
None, # 240
None, # 241
None, # 242
None, # 243
None, # 244
None, # 245
None, # 246
None, # 247
None, # 248
None, # 249
None, # 250
None, # 251
None, # 252
None, # 253
None, # 254
(255, TType.STRUCT, 'Base', [base.ttypes.Base, None], None, ), # 255
)
all_structs.append(ServiceResponse)
ServiceResponse.thrift_spec = (
None, # 0
(1, TType.STRING, 'Resp', 'UTF8', None, ), # 1
None, # 2
None, # 3
None, # 4
None, # 5
None, # 6
None, # 7
None, # 8
None, # 9
None, # 10
None, # 11
None, # 12
None, # 13
None, # 14
None, # 15
None, # 16
None, # 17
None, # 18
None, # 19
None, # 20
None, # 21
None, # 22
None, # 23
None, # 24
None, # 25
None, # 26
None, # 27
None, # 28
None, # 29
None, # 30
None, # 31
None, # 32
None, # 33
None, # 34
None, # 35
None, # 36
None, # 37
None, # 38
None, # 39
None, # 40
None, # 41
None, # 42
None, # 43
None, # 44
None, # 45
None, # 46
None, # 47
None, # 48
None, # 49
None, # 50
None, # 51
None, # 52
None, # 53
None, # 54
None, # 55
None, # 56
None, # 57
None, # 58
None, # 59
None, # 60
None, # 61
None, # 62
None, # 63
None, # 64
None, # 65
None, # 66
None, # 67
None, # 68
None, # 69
None, # 70
None, # 71
None, # 72
None, # 73
None, # 74
None, # 75
None, # 76
None, # 77
None, # 78
None, # 79
None, # 80
None, # 81
None, # 82
None, # 83
None, # 84
None, # 85
None, # 86
None, # 87
None, # 88
None, # 89
None, # 90
None, # 91
None, # 92
None, # 93
None, # 94
None, # 95
None, # 96
None, # 97
None, # 98
None, # 99
None, # 100
None, # 101
None, # 102
None, # 103
None, # 104
None, # 105
None, # 106
None, # 107
None, # 108
None, # 109
None, # 110
None, # 111
None, # 112
None, # 113
None, # 114
None, # 115
None, # 116
None, # 117
None, # 118
None, # 119
None, # 120
None, # 121
None, # 122
None, # 123
None, # 124
None, # 125
None, # 126
None, # 127
None, # 128
None, # 129
None, # 130
None, # 131
None, # 132
None, # 133
None, # 134
None, # 135
None, # 136
None, # 137
None, # 138
None, # 139
None, # 140
None, # 141
None, # 142
None, # 143
None, # 144
None, # 145
None, # 146
None, # 147
None, # 148
None, # 149
None, # 150
None, # 151
None, # 152
None, # 153
None, # 154
None, # 155
None, # 156
None, # 157
None, # 158
None, # 159
None, # 160
None, # 161
None, # 162
None, # 163
None, # 164
None, # 165
None, # 166
None, # 167
None, # 168
None, # 169
None, # 170
None, # 171
None, # 172
None, # 173
None, # 174
None, # 175
None, # 176
None, # 177
None, # 178
None, # 179
None, # 180
None, # 181
None, # 182
None, # 183
None, # 184
None, # 185
None, # 186
None, # 187
None, # 188
None, # 189
None, # 190
None, # 191
None, # 192
None, # 193
None, # 194
None, # 195
None, # 196
None, # 197
None, # 198
None, # 199
None, # 200
None, # 201
None, # 202
None, # 203
None, # 204
None, # 205
None, # 206
None, # 207
None, # 208
None, # 209
None, # 210
None, # 211
None, # 212
None, # 213
None, # 214
None, # 215
None, # 216
None, # 217
None, # 218
None, # 219
None, # 220
None, # 221
None, # 222
None, # 223
None, # 224
None, # 225
None, # 226
None, # 227
None, # 228
None, # 229
None, # 230
None, # 231
None, # 232
None, # 233
None, # 234
None, # 235
None, # 236
None, # 237
None, # 238
None, # 239
None, # 240
None, # 241
None, # 242
None, # 243
None, # 244
None, # 245
None, # 246
None, # 247
None, # 248
None, # 249
None, # 250
None, # 251
None, # 252
None, # 253
None, # 254
(255, TType.STRUCT, 'BaseResp', [base.ttypes.BaseResp, None], None, ), # 255
)
fix_spec(all_structs)
del all_structs