def setupLogger(self): """ Setup logging infrastructure """ self.log_sender = LogSender(self.render_node) Logger.addLoggerHandler(self.loggerHandler)
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