def __init__(self, app_name, config, base_context_mapping, in_event, handler, out_event=None): self.config = config self.app_name = app_name self.in_event = in_event self.handler = handler self.out_event = out_event self.context = bubbles.build_context(base_context_mapping) self.ReventMessage = ReventMessage print 'context mapping: %s' % self.context.mapping # sanity checks assert in_event, "Must provide in_event" assert handler, "Must provide handler" # subscribe to our in_event self.channel = '%s-%s-%s' % (app_name, in_event, self.handler.__name__) self.rc = ReventClient(self.channel, in_event, verified=10, **self.config.get('revent')) # update the context to include the revent client and # introspect module self.context.add('revent', self.rc) self.context.add('introspect', rc_introspect) # create a connection to redis self.redis = Redis(**self.config.get('redis')) # add to context self.context.add('redis', self.redis) # make our redis namespace the same as our channel self.redis_ns = 'App-%s' % self.app_name # update the context to include all the underscore methods # (but not dunderscore) for name, value in getmembers(self): if self.__include_in_context(name, value): self.context.add(name, value) # add config to context self.context.add('config', self.config)