コード例 #1
0
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)
コード例 #2
0
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()
コード例 #3
0
ファイル: test_tracking.py プロジェクト: GuoJing/thriftpy
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()