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()
router.register((STDOUT, "stdout", 0)) router.register((Null, "null", 0)) router.connect("logformatfilter.outbox", "stdout.inbox") router.connect("graphite.outbox", "null.inbox") #Feedback loop router.register((Header, "header", 0), header={ 'broker_exchange': "", 'broker_key': "test", 'broker_tag': "test" }) router.register((AMQP, "broker", 0), host="sandbox", consume_queue="test") router.connect("broker.inbox", "header.inbox") router.connect("header.outbox", "broker.outbox") #Produce events # router.register((NumberGenerator, "numbergenerator", 0)) # router.register((Header, "header", 0), header={'broker_exchange':"", 'broker_key':"test", 'broker_tag':"test"}) # router.register((AMQP, "broker", 0), host="sandbox") # router.connect("numbergenerator.outbox", "header.inbox") # router.connect("header.outbox", "broker.outbox") #Consume events to STDOUT # router.register((AMQP, "broker", 0), host="sandbox", consume_queue="test") # router.register((STDOUT, "events_stdout", 0)) # router.connect("broker.inbox", "events_stdout.inbox") #start router.start() router.block()
Actor.__init__(self, name) self.createQueue("inbox") self.registerConsumer(self.consume, self.queuepool.inbox) def consume(self, event): self.logging.info("Received event.") sleep(0.5) # gevent_profiler.set_stats_output('my-stats.txt') # gevent_profiler.set_summary_output('my-summary.txt') # gevent_profiler.set_trace_output('my-trace.txt') # gevent_profiler.attach() #Initialize router router = Default(interval=1, rescue=False, uuid=False) router.registerLogModule(STDOUT, "logs_out") router.registerMetricModule(STDOUT, "metrics_out") router.register(Input, "input") router.register(Output, "output") router.connect("input.outbox", "output.inbox") #start router.start() router.block() # gevent_profiler.detach()
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