def __init__(self, *args): if len(args) == 1: self.__initArgs__(args[0], TTransport.TTransportFactoryBase(), TTransport.TTransportFactoryBase(), TBinaryProtocol.TBinaryProtocolFactory(), TBinaryProtocol.TBinaryProtocolFactory()) elif len(args) == 3: self.__initArgs__(args[0], args[1], args[1], args[2], args[2]) elif len(args) == 5: self.__initArgs__(args[0], args[1], args[2], args[3], args[4])
def __init__(self, *args): if (len(args) == 2): self.__initArgs__(args[0], args[1], TTransport.TTransportFactoryBase(), TTransport.TTransportFactoryBase(), TBinaryProtocol.TBinaryProtocolFactory(), TBinaryProtocol.TBinaryProtocolFactory()) elif (len(args) == 4): self.__initArgs__(args[0], args[1], args[2], args[2], args[3], args[3]) elif (len(args) == 6): self.__initArgs__(args[0], args[1], args[2], args[3], args[4], args[5])
def __init__(self, *args): # 弄清楚 processor/server_transport, factory1, factory2, protocol1, protocol2)之间的关系 # TServer解决了初始化参数的问题 # if (len(args) == 2): self.__initArgs__(args[0], args[1], TTransport.TTransportFactoryBase(), TTransport.TTransportFactoryBase(), TBinaryProtocol.TBinaryProtocolFactory(), TBinaryProtocol.TBinaryProtocolFactory()) elif (len(args) == 4): self.__initArgs__(args[0], args[1], args[2], args[2], args[3], args[3]) elif (len(args) == 6): self.__initArgs__(args[0], args[1], args[2], args[3], args[4], args[5])
def run(self): servers = [] # init thrift transport&protocol objects self.tfactory = TTransport.TTransportFactoryBase() self.pfactory = TBinaryProtocolFactoryExt() for s in self.sockets: s.setblocking(1) pool = Pool(self.worker_connections) hfun = partial(self.handle, s) server = StreamServer(s, handle=hfun, spawn=pool) server.start() servers.append(server) try: while self.alive: self.notify() gevent.sleep(0.1) except KeyboardInterrupt: pass except: for server in servers: try: server.stop() except: pass raise try: # Stop accepting requests for server in servers: if hasattr(server, 'close'): # gevent 1.0 server.close() if hasattr(server, 'kill'): # gevent < 1.0 server.kill() # Handle current requests until graceful_timeout ts = time.time() while time.time() - ts <= self.cfg.graceful_timeout: accepting = 0 for server in servers: if server.pool.free_count() != server.pool.size: accepting += 1 # if no server is accepting a connection, we can exit if not accepting: return self.notify() gevent.sleep(1.0) # Force kill all active the handlers self.log.warning("Worker graceful timeout (pid:%s)" % self.pid) [server.stop(timeout=1) for server in servers] except: pass
def __init__(self, log, listener, processor, inputTransportFactory=None, outputTransportFactory=None, inputProtocolFactory=None, outputProtocolFactory=None, **kwargs): StreamServer.__init__(self, listener, self._process_socket, **kwargs) self.log = log self.processor = processor self.inputTransportFactory = (inputTransportFactory or TTransport.TTransportFactoryBase()) self.outputTransportFactory = (outputTransportFactory or TTransport.TTransportFactoryBase()) self.inputProtocolFactory = (inputProtocolFactory or TBinaryProtocol.TBinaryProtocolFactory()) self.outputProtocolFactory = (outputProtocolFactory or TBinaryProtocol.TBinaryProtocolFactory())