parent
8a3c9033d1
commit
53a51d101b
@ -0,0 +1,25 @@ |
||||
import sys |
||||
|
||||
from thrift.protocol import TBinaryProtocol |
||||
from thrift.transport import TSocket, TTransport |
||||
|
||||
sys.path.append("/home/hua/PycharmProjects/PixivSearch") |
||||
from PixivSearch.thrift.TestQry.TestQry import Client |
||||
|
||||
if __name__ == '__main__': |
||||
# Make socket |
||||
socket = TSocket.TSocket('127.0.0.1', 2233) |
||||
|
||||
# Buffering is critical. Raw sockets are very slow |
||||
transport = TTransport.TFramedTransport(socket) |
||||
|
||||
if not transport.isOpen(): |
||||
transport.open() |
||||
|
||||
# Wrap in a protocol |
||||
protocol = TBinaryProtocol.TBinaryProtocol(transport) |
||||
|
||||
# Create a client to use the protocol encoder |
||||
client = Client(protocol) |
||||
|
||||
print(client.qryTest(0)) |
@ -0,0 +1,29 @@ |
||||
from thrift.protocol import TBinaryProtocol |
||||
from thrift.protocol.TBinaryProtocol import TBinaryProtocolFactory |
||||
from thrift.server.TNonblockingServer import TNonblockingServer |
||||
from thrift.transport import TSocket |
||||
from thrift.transport.TTransport import TFramedTransport |
||||
|
||||
from PixivSearch.thrift.TestQry import TestQry |
||||
from PixivSearch.thrift.TestQry.ttypes import QryResult |
||||
|
||||
|
||||
class QueryImpl(TestQry.Iface): |
||||
|
||||
def qryTest(self, qryCode): |
||||
result = QryResult() |
||||
if qryCode == 1: |
||||
result.code = 1 |
||||
result.msg = 'success' |
||||
else: |
||||
result.code = 0 |
||||
result.msg = 'fail' |
||||
return result |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
socket = TSocket.TSocket(port=2233) |
||||
processor = TestQry.Processor(QueryImpl()) |
||||
server = TNonblockingServer(processor, socket, TBinaryProtocolFactory(), TFramedTransport()) |
||||
|
||||
server.serve() |
@ -0,0 +1,116 @@ |
||||
#!/usr/bin/env python |
||||
# |
||||
# Autogenerated by Thrift Compiler (0.11.0) |
||||
# |
||||
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING |
||||
# |
||||
# options string: py |
||||
# |
||||
|
||||
import sys |
||||
import pprint |
||||
from urllib.parse import urlparse |
||||
sys.path.append("/home/hua/PycharmProjects/PixivSearch") |
||||
from PixivSearch.thrift import TestQry |
||||
|
||||
from thrift.transport import TTransport, TSocket, TSSLSocket, THttpClient |
||||
from thrift.protocol.TBinaryProtocol import TBinaryProtocol |
||||
|
||||
|
||||
|
||||
if len(sys.argv) <= 1 or sys.argv[1] == '--help': |
||||
print('') |
||||
print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]') |
||||
print('') |
||||
print('Functions:') |
||||
print(' QryResult qryTest(i32 qryCode)') |
||||
print('') |
||||
sys.exit(0) |
||||
|
||||
pp = pprint.PrettyPrinter(indent=2) |
||||
host = 'localhost' |
||||
port = 9090 |
||||
uri = '' |
||||
framed = False |
||||
ssl = False |
||||
validate = True |
||||
ca_certs = None |
||||
keyfile = None |
||||
certfile = None |
||||
http = False |
||||
argi = 1 |
||||
|
||||
if sys.argv[argi] == '-h': |
||||
parts = sys.argv[argi + 1].split(':') |
||||
host = parts[0] |
||||
if len(parts) > 1: |
||||
port = int(parts[1]) |
||||
argi += 2 |
||||
|
||||
if sys.argv[argi] == '-u': |
||||
url = urlparse(sys.argv[argi + 1]) |
||||
parts = url[1].split(':') |
||||
host = parts[0] |
||||
if len(parts) > 1: |
||||
port = int(parts[1]) |
||||
else: |
||||
port = 80 |
||||
uri = url[2] |
||||
if url[4]: |
||||
uri += '?%s' % url[4] |
||||
http = True |
||||
argi += 2 |
||||
|
||||
if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed': |
||||
framed = True |
||||
argi += 1 |
||||
|
||||
if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl': |
||||
ssl = True |
||||
argi += 1 |
||||
|
||||
if sys.argv[argi] == '-novalidate': |
||||
validate = False |
||||
argi += 1 |
||||
|
||||
if sys.argv[argi] == '-ca_certs': |
||||
ca_certs = sys.argv[argi+1] |
||||
argi += 2 |
||||
|
||||
if sys.argv[argi] == '-keyfile': |
||||
keyfile = sys.argv[argi+1] |
||||
argi += 2 |
||||
|
||||
if sys.argv[argi] == '-certfile': |
||||
certfile = sys.argv[argi+1] |
||||
argi += 2 |
||||
|
||||
cmd = sys.argv[argi] |
||||
args = sys.argv[argi + 1:] |
||||
|
||||
if http: |
||||
transport = THttpClient.THttpClient(host, port, uri) |
||||
else: |
||||
if ssl: |
||||
socket = TSSLSocket.TSSLSocket(host, port, validate=validate, ca_certs=ca_certs, keyfile=keyfile, certfile=certfile) |
||||
else: |
||||
socket = TSocket.TSocket(host, port) |
||||
if framed: |
||||
transport = TTransport.TFramedTransport(socket) |
||||
else: |
||||
transport = TTransport.TBufferedTransport(socket) |
||||
protocol = TBinaryProtocol(transport) |
||||
client = TestQry.Client(protocol) |
||||
transport.open() |
||||
|
||||
if cmd == 'qryTest': |
||||
if len(args) != 1: |
||||
print('qryTest requires 1 args') |
||||
sys.exit(1) |
||||
pp.pprint(client.qryTest(eval(args[0]),)) |
||||
|
||||
else: |
||||
print('Unrecognized method %s' % cmd) |
||||
sys.exit(1) |
||||
|
||||
transport.close() |
@ -0,0 +1,247 @@ |
||||
# |
||||
# Autogenerated by Thrift Compiler (0.11.0) |
||||
# |
||||
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING |
||||
# |
||||
# options string: py |
||||
# |
||||
import logging |
||||
|
||||
from thrift.TRecursive import fix_spec |
||||
from thrift.Thrift import TProcessor |
||||
from thrift.Thrift import TType, TMessageType, TApplicationException |
||||
from thrift.transport import TTransport |
||||
|
||||
from PixivSearch.thrift.TestQry.ttypes import QryResult |
||||
|
||||
all_structs = [] |
||||
|
||||
port=2233 |
||||
|
||||
class Iface(object): |
||||
def qryTest(self, qryCode): |
||||
""" |
||||
测试查询接口,当qryCode值为1时返回"成功"的响应信息,qryCode值为其他值时返回"失败"的响应信息 |
||||
@param qryCode测试参数 |
||||
|
||||
Parameters: |
||||
- qryCode |
||||
""" |
||||
pass |
||||
|
||||
|
||||
class Client(Iface): |
||||
def __init__(self, iprot, oprot=None): |
||||
self._iprot = self._oprot = iprot |
||||
if oprot is not None: |
||||
self._oprot = oprot |
||||
self._seqid = 0 |
||||
|
||||
def qryTest(self, qryCode): |
||||
""" |
||||
测试查询接口,当qryCode值为1时返回"成功"的响应信息,qryCode值为其他值时返回"失败"的响应信息 |
||||
@param qryCode测试参数 |
||||
|
||||
Parameters: |
||||
- qryCode |
||||
""" |
||||
self.send_qryTest(qryCode) |
||||
return self.recv_qryTest() |
||||
|
||||
def send_qryTest(self, qryCode): |
||||
self._oprot.writeMessageBegin('qryTest', TMessageType.CALL, self._seqid) |
||||
args = qryTest_args() |
||||
args.qryCode = qryCode |
||||
args.write(self._oprot) |
||||
self._oprot.writeMessageEnd() |
||||
self._oprot.trans.flush() |
||||
|
||||
def recv_qryTest(self): |
||||
iprot = self._iprot |
||||
(fname, mtype, rseqid) = iprot.readMessageBegin() |
||||
if mtype == TMessageType.EXCEPTION: |
||||
x = TApplicationException() |
||||
x.read(iprot) |
||||
iprot.readMessageEnd() |
||||
raise x |
||||
result = qryTest_result() |
||||
result.read(iprot) |
||||
iprot.readMessageEnd() |
||||
if result.success is not None: |
||||
return result.success |
||||
raise TApplicationException(TApplicationException.MISSING_RESULT, "qryTest failed: unknown result") |
||||
|
||||
|
||||
class Processor(Iface, TProcessor): |
||||
def __init__(self, handler): |
||||
self._handler = handler |
||||
self._processMap = {} |
||||
self._processMap["qryTest"] = Processor.process_qryTest |
||||
|
||||
def process(self, iprot, oprot): |
||||
(name, type, seqid) = iprot.readMessageBegin() |
||||
if name not in self._processMap: |
||||
iprot.skip(TType.STRUCT) |
||||
iprot.readMessageEnd() |
||||
x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name)) |
||||
oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid) |
||||
x.write(oprot) |
||||
oprot.writeMessageEnd() |
||||
oprot.trans.flush() |
||||
return |
||||
else: |
||||
self._processMap[name](self, seqid, iprot, oprot) |
||||
return True |
||||
|
||||
def process_qryTest(self, seqid, iprot, oprot): |
||||
args = qryTest_args() |
||||
args.read(iprot) |
||||
iprot.readMessageEnd() |
||||
result = qryTest_result() |
||||
try: |
||||
result.success = self._handler.qryTest(args.qryCode) |
||||
msg_type = TMessageType.REPLY |
||||
except TTransport.TTransportException: |
||||
raise |
||||
except TApplicationException as ex: |
||||
logging.exception('TApplication exception in handler') |
||||
msg_type = TMessageType.EXCEPTION |
||||
result = ex |
||||
except Exception: |
||||
logging.exception('Unexpected exception in handler') |
||||
msg_type = TMessageType.EXCEPTION |
||||
result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') |
||||
oprot.writeMessageBegin("qryTest", msg_type, seqid) |
||||
result.write(oprot) |
||||
oprot.writeMessageEnd() |
||||
oprot.trans.flush() |
||||
|
||||
# HELPER FUNCTIONS AND STRUCTURES |
||||
|
||||
|
||||
class qryTest_args(object): |
||||
""" |
||||
Attributes: |
||||
- qryCode |
||||
""" |
||||
|
||||
|
||||
def __init__(self, qryCode=None,): |
||||
self.qryCode = qryCode |
||||
|
||||
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.I32: |
||||
self.qryCode = iprot.readI32() |
||||
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('qryTest_args') |
||||
if self.qryCode is not None: |
||||
oprot.writeFieldBegin('qryCode', TType.I32, 1) |
||||
oprot.writeI32(self.qryCode) |
||||
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(qryTest_args) |
||||
qryTest_args.thrift_spec = ( |
||||
None, # 0 |
||||
(1, TType.I32, 'qryCode', None, None, ), # 1 |
||||
) |
||||
|
||||
|
||||
class qryTest_result(object): |
||||
""" |
||||
Attributes: |
||||
- success |
||||
""" |
||||
|
||||
|
||||
def __init__(self, success=None,): |
||||
self.success = success |
||||
|
||||
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 == 0: |
||||
if ftype == TType.STRUCT: |
||||
self.success = QryResult() |
||||
self.success.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('qryTest_result') |
||||
if self.success is not None: |
||||
oprot.writeFieldBegin('success', TType.STRUCT, 0) |
||||
self.success.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(qryTest_result) |
||||
qryTest_result.thrift_spec = ( |
||||
(0, TType.STRUCT, 'success', [QryResult, None], None, ), # 0 |
||||
) |
||||
fix_spec(all_structs) |
||||
del all_structs |
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1 @@ |
||||
__all__ = ['ttypes', 'constants', 'TestQry'] |
@ -0,0 +1,14 @@ |
||||
# |
||||
# 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 .ttypes import * |
@ -0,0 +1,91 @@ |
||||
# |
||||
# 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 QryResult(object): |
||||
""" |
||||
Attributes: |
||||
- code: 返回码, 1成功,0失败 |
||||
- msg: 响应信息 |
||||
""" |
||||
|
||||
|
||||
def __init__(self, code=None, msg=None,): |
||||
self.code = code |
||||
self.msg = msg |
||||
|
||||
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.I32: |
||||
self.code = iprot.readI32() |
||||
else: |
||||
iprot.skip(ftype) |
||||
elif fid == 2: |
||||
if ftype == TType.STRING: |
||||
self.msg = 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('QryResult') |
||||
if self.code is not None: |
||||
oprot.writeFieldBegin('code', TType.I32, 1) |
||||
oprot.writeI32(self.code) |
||||
oprot.writeFieldEnd() |
||||
if self.msg is not None: |
||||
oprot.writeFieldBegin('msg', TType.STRING, 2) |
||||
oprot.writeString(self.msg.encode('utf-8') if sys.version_info[0] == 2 else self.msg) |
||||
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(QryResult) |
||||
QryResult.thrift_spec = ( |
||||
None, # 0 |
||||
(1, TType.I32, 'code', None, None, ), # 1 |
||||
(2, TType.STRING, 'msg', 'UTF8', None, ), # 2 |
||||
) |
||||
fix_spec(all_structs) |
||||
del all_structs |
Loading…
Reference in new issue