Exemple #1
0
 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])
Exemple #2
0
 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])
Exemple #3
0
 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
Exemple #5
0
 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())