class ThriftClient(object): """ Thrift Client类封装。 """ def __init__(self, service, socket_config, service_name=None): trans_socket = TSocket(**socket_config) self.__transport = TBufferedTransportFactory()\ .get_transport(trans_socket) if service_name: protocol_factory = TMultiplexedProtocolFactory( TBinaryProtocolFactory(), service_name) else: protocol_factory = TBinaryProtocolFactory() protocol = protocol_factory.get_protocol(self.__transport) self.__client = TClient(service, protocol) self.__is_open = False def __del__(self): if self.__is_open: self.__transport.close() def __getattr__(self, item): if not self.__is_open: self.__transport.open() self.__is_open = True return getattr(self.__client, item)
def client(client_class=TTrackedClient, port=PORT): socket = TSocket("localhost", port) try: trans = TBufferedTransportFactory().get_transport(socket) proto = TBinaryProtocolFactory().get_protocol(trans) trans.open() args = [addressbook.AddressBookService, proto] if client_class.__name__ == TTrackedClient.__name__: args.insert(0, tracker) yield client_class(*args) finally: trans.close()
def client(client_class=TTrackedClient, port=6029): socket = TSocket("localhost", port) try: trans = TBufferedTransportFactory().get_transport(socket) proto = TBinaryProtocolFactory().get_protocol(trans) trans.open() args = [addressbook.AddressBookService, proto] if client_class.__name__ == TTrackedClient.__name__: args.insert(0, tracker) yield client_class(*args) finally: trans.close()