def startRouter(): if self.identification is not None: setproctitle(self.identification) router = Default(config, size=self.queue_size, frequency=self.frequency, identification=self.identification, graph=self.graph, graph_include_sys=self.graph_include_sys) router.start() e.wait() router.stop()
def startRouter(): if self.identification is not None: setproctitle(self.identification) router = Default( config, size=self.queue_size, frequency=self.frequency, identification=self.identification, graph=self.graph, graph_include_sys=self.graph_include_sys ) router.start() e.wait() router.stop()
class RouterBootstrap(): ''' Setup, configure and a router process. ''' def __init__(self, config, debug=False, queue_size=100, frequency=1, identification=None): self.config = config self.identification = identification self.debug = debug self.router = Default(size=queue_size, frequency=frequency) self.module = Module() def loadModule(self, name): ''' Loads a module using the entrypoint name. ''' return self.module.load(name) def setupModules(self, modules): ''' Loads and initialzes the modules from the bootstrap file. ''' for module in modules: m = self.loadModule(modules[module]["module"]) if "arguments" in modules[module]: self.router.registerModule(m, module, **modules[module]["arguments"]) else: self.router.registerModule(m, module) def setupRoutes(self, table): ''' Connects the modules from the bootstrap file. ''' for route in table: sm, sq, dm, dq = self.__splitRoute(route) self.router.pool.getModule(sm).connect(sq, self.router.pool.getModule(dm), dq) def start(self): ''' Calls the router's start() function. ''' self.setupModules(self.config["modules"]) self.setupRoutes(self.config["routingtable"]) if self.debug: self.__debug() try: syslog = self.loadModule("wishbone.output.syslog") self.router.registerModule(syslog, "syslog", ident=self.identification) self.router.pool.getModule("logs_funnel").connect("outbox", self.router.pool.getModule("syslog"), "inbox") except QueueConnected: pass self.router.start() while self.router.isRunning(): sleep(1) def stop(self): ''' Calls the router's stop() function. ''' self.router.stop() def __debug(self): ''' In debug mode we route all logging to SDOUT. ''' # In debug mode we write our logs to STDOUT log_stdout = self.loadModule("wishbone.output.stdout") log_human = self.loadModule("wishbone.encode.humanlogformat") self.router.registerModule(log_stdout, "log_stdout") self.router.registerModule(log_human, "log_format", ident=self.identification) self.router.pool.getModule("logs_funnel").connect("outbox", self.router.pool.getModule("log_format"), "inbox") self.router.pool.getModule("log_format").connect("outbox", self.router.pool.getModule("log_stdout"), "inbox") def __splitRoute(self, definition): ''' Splits the route definition string into 4 separate string. ''' (source, destination) = definition.split('->') (sm, sq) = source.rstrip().lstrip().split('.') (dm, dq) = destination.rstrip().lstrip().split('.') return sm, sq, dm, dq