ThriftConnect.py 2.3 KB
# coding=utf-8
#author:        4N
#createtime:    2021/9/8
#email:         nheweijun@sina.com

from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from app.modules.service.image.ImageDataService import ImageDataService

class ThriftConnect:
    '''
    thrift连接类
    '''

    client = None
    transport = None

    def __init__(self,data_server):
        host = data_server.split(":")[0]
        port = int(data_server.split(":")[1])
        socket: TSocket = TSocket.TSocket(host, port)
        self.transport = TTransport.TBufferedTransport(socket)
        protocol = TBinaryProtocol.TBinaryProtocol(self.transport)
        self.client = ImageDataService.Client(protocol)
        self.transport.open()

    def close(self):
        self.transport.close()

class ThriftConnectCpp:
    '''
    thrift连接类
    '''

    client = None
    transport = None

    def __init__(self,data_server):
        host = data_server.split(":")[0]
        port = int(data_server.split(":")[1])
        self.transport: TSocket = TSocket.TSocket(host, port)
        self.transport = TTransport.TBufferedTransport(self.transport)
        protocol = TBinaryProtocol.TBinaryProtocol(self.transport)
        # self.client = ImageDataService.Client(protocol)
        self.transport.open()

    def close(self):
        self.transport.close()

class ThriftPool:
    '''
    thrift线程池
    '''
    clients = []
    transports = []
    host = None
    port = None
    index = -1

    def __init__(self,data_server):
        self.host = data_server.split(":")[0]
        self.port = int(data_server.split(":")[1])

    def get_client(self):
        if len(self.clients) < 20:
            socket: TSocket = TSocket.TSocket(self.host, self.port)
            transport = TTransport.TBufferedTransport(socket)
            protocol = TBinaryProtocol.TBinaryProtocol(transport)
            client = ImageDataService.Client(protocol)
            self.clients.append(client)
            self.transports.append(transport)
            return client,transport
        else:
            self.index += 1
            if self.index == 20:
                self.index = 0
            return self.clients[self.index],self.transports[self.index]


    def close(self):
        pass