コード例 #1
0
    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)