Exemplo n.º 1
0
    def startWorker(self):
        processes = int(
            config.getConf('rpc', 'processes', multiprocessing.cpu_count()))
        urlSet = set()
        portSet = set()

        # get all endpoints
        endpointSet = self.getAllEndpoints()
        host = NetUtils.getIp()
        for i in range(0, processes):
            # get a port
            port = NetUtils.getFreePort()
            if port in portSet:
                flag = True
                while flag:
                    time.time(5)
                    port = NetUtils.getFreePort()
                    if port not in portSet:
                        break
            portSet.add(port)
            url = URL(self.PROTOCOL, host, port)
            url.setEndpints(endpoints=endpointSet)
            p = Process(target=self.worker, args=(url, ))
            urlSet.add(url)
            url.setProcess(p)
            p.start()
        return urlSet
Exemplo n.º 2
0
    def thrift(self):
        from boarpc.protocol.tgunicorn.thrift.thriftapp import ThriftApplication
        from boarpc.protocol.thrift import BoarpcService
        from boarpc.protocol.dispatcherHandler import DispatcherHandler
        from common.utils.netUtils import NetUtils
        from common.config.conf import config
        import multiprocessing

        handler = DispatcherHandler()
        app = BoarpcService.Processor(handler)
        bind = "%s:%s" % (NetUtils.getIp(), str(NetUtils.getFreePort()))
        options = {
            'worker_class':
            'thrift_gevent',
            'thrift_protocol_factory':
            'thrift.protocol.TCompactProtocol:TCompactProtocolAcceleratedFactory',
            'thrift_transport_factory':
            'thrift.transport.TTransport:TBufferedTransportFactory',
            'service_register_cls':
            'boarpc.protocol.tgunicorn.zk_process:ZkRigster',
            'bind':
            bind,
            'workers':
            int(config.getConf('rpc', 'processes',
                               multiprocessing.cpu_count())),
            'on_exit':
            GunicornProtocol.on_exit,
            'daemon':
            config.getConf('profiles', 'active', 'dev') == 'prod',
            'reuse-port':
            True,
        }

        return ThriftApplication(app, options)