Esempio n. 1
0
    def setupLogger(self):
        """
        Setup logging infrastructure
        """

        self.log_sender = LogSender(self.render_node)

        Logger.addLoggerHandler(self.loggerHandler)
Esempio n. 2
0
class Slave(Singleton):
    """
    Render farm salve
    """

    def initInstance(self):
        """
        Initialize slave
        """

        # Set signal handlers
        self.setSignals()

        address = Config.slave['master_address']
        port = Config.slave['master_port']
        url = 'http://{0}:{1}/'.format(address, port)

        self.render_node = RenderNode()
        self.proxy = LockingServerProxy(url)
        self.proxy_addr = (address, port)

        self.setupLogger()

    def loggerHandler(self, message):
        """
        Handler of new incoming logging message
        """

        self.log_sender.logMessage(message)

    def setupLogger(self):
        """
        Setup logging infrastructure
        """

        self.log_sender = LogSender(self.render_node)

        Logger.addLoggerHandler(self.loggerHandler)

    def sigint_handler(self, sig, frame):
        """
        Handler of SIGINT signal
        """

        Logger.log('Caught SIGINT signal, terminating...')
        self.render_node.requestStop()
        self.log_sender.requestStop()
        sys.exit(0)

    def setSignals(self):
        """
        Set signals handlers
        """

        signal.signal(signal.SIGINT,
            lambda sig, frame: self.sigint_handler(sig, frame))

    def run(self):
        """
        Run slave logic
        """

        self.log_sender.start()
        self.render_node.start()
        self.render_node.join()

    def getRenderNode(self):
        """
        Get node descriptor
        """

        return self.render_node

    def getProxy(self):
        """
        Get XML-RPC proxy
        """

        return self.proxy

    def getProxyAddress(self):
        """
        Get XML-RPC proxy address
        """

        return self.proxy_addr