def run(self): """ Run forever, listening on the 'default' tube. When a message is received, send it down all the registered non-default tubes. """ beanstalk_host = self.config.get('beanstalk.host', DEFAULT_BEANSTALK_HOST) beanstalk_port = self.config.get('beanstalk.port', DEFAULT_BEANSTALK_PORT) beanstalk = make_beanstalkc(beanstalk_host, beanstalk_port) listeners = self.config.get('beanstalk.listeners', [__name__]) tubes = [] for listener in listeners: listener_module = __import__(listener, {}, {}, ['Listener']) tube = listener_module.Listener.TUBE listener_runner = listener_module.Listener( kwargs={'tube': tube, 'config': self.config}) listener_runner.daemon = True listener_runner.start() tubes.append(tube) try: while True: job = beanstalk.reserve() for tube in tubes: beanstalk.use(tube) beanstalk.put(job.body) job.delete() except beanstalkc.SocketError, exc: # retry on new client LOGGER.error('dispatcher error reading beanstalk, restart: %s', exc) self.run()
def run(self): LOGGER.info('listener starting up') config = self._kwargs['config'] self.serializer = Serializer('json', {'tiddlyweb.config': config}) beanstalk_host = config.get('beanstalk.host', DEFAULT_BEANSTALK_HOST) beanstalk_port = config.get('beanstalk.port', DEFAULT_BEANSTALK_PORT) self.beanstalkc = make_beanstalkc(beanstalk_host, beanstalk_port) BaseListener.run(self)
def run(self): config = self._kwargs['config'] tube = self._kwargs['tube'] beanstalk_host = config.get('beanstalk.host', DEFAULT_BEANSTALK_HOST) beanstalk_port = config.get('beanstalk.port', DEFAULT_BEANSTALK_PORT) beanstalk = make_beanstalkc(beanstalk_host, beanstalk_port) beanstalk.watch(tube) beanstalk.ignore('default') LOGGER.debug('using %s', beanstalk.using()) self.config = config try: while True: job = beanstalk.reserve() self._act(job) job.delete() except beanstalkc.SocketError, exc: # retry on new client LOGGER.error('listener error reading beanstalk, restart: %s', exc) self.run()