Beispiel #1
0
class RealtimePerformanceContainer(object):
    def __init__(self):
        super(RealtimePerformanceContainer,self).__init__()

        self.instance_performance = dict()
        self.location_performance = dict()

        self.event_signaler = EventSignaler('realtime_performance')

    def onTweet(self, tweet):
        assert isinstance(tweet, Tweet)

        instancePerformance = self.instance_performance.setdefault(tweet.instance_key, {'success' : RealtimePerformance(), 'geocode_fail' : RealtimePerformance()})

        if tweet.has_user and tweet.user.is_geocoded:
            for location in tweet.user.location_geocode.all_geocode_results:
                locationPerformance = self.location_performance.setdefault(tweet.instance_key, dict()).setdefault(location, {'success': RealtimePerformance()})
                locationPerformance['success'].onTweet(tweet)
                
            instancePerformance['success'].onTweet(tweet)
        else:
            instancePerformance['geocode_fail'].onTweet(tweet)

    def signalUpdate(self):
        self.event_signaler.signalEvent({'instance_tweets' : self.instance_performance,
                                         'location_tweets' : self.location_performance})
Beispiel #2
0
class DataSignaler(object):
    def __init__(self, name, pruneFunc, data):
        super(DataSignaler, self).__init__()

        assert isinstance(data,TreeFunctioned)

        self.data = data
        self.event_signaler = EventSignaler(key=name)

        if pruneFunc is not None:
            assert callable(pruneFunc)

        self.prune_func = pruneFunc
        self._lock = RLock()

    def add(self, value):
        self._lock.acquire()

        try:
            self.data.addToTreeByFunction(value)
        finally:
            self._lock.release()

        data = {self.event_signaler.key : {'data': self.data}}
        self.event_signaler.signalEvent(data)

    def prune(self):
        if self.prune_func is not None:
            return criticalSection(self._lock, lambda: self.prune_func(dataStructure=self.data))

    def inByFunction(self, value, hashFuncList=None, depth=0):
       return criticalSection(self._lock, lambda: self.data.inByFunction(value, hashFuncList, depth))

    def getOriginalByFunction(self, value, hashFuncList=None, depth=0):
        return criticalSection(self._lock, lambda: self.data.getOriginalByFunction(value, hashFuncList, depth))
Beispiel #3
0
class DataSignalerStateless(object):
    def __init__(self, name):
        super(DataSignalerStateless,self).__init__()

        self.event_signaler = EventSignaler(key=name)

    def add(self, value):
        self.event_signaler.signalEvent({self.event_signaler.key : {'data' : value}})
Beispiel #4
0
class DataSignalerStateless(object):
    def __init__(self, name):
        super(DataSignalerStateless, self).__init__()

        self.event_signaler = EventSignaler(key=name)

    def add(self, value):
        self.event_signaler.signalEvent(
            {self.event_signaler.key: {
                'data': value
            }})
Beispiel #5
0
class DataSignaler(object):
    def __init__(self, name, pruneFunc, data):
        super(DataSignaler, self).__init__()

        assert isinstance(data, TreeFunctioned)

        self.data = data
        self.event_signaler = EventSignaler(key=name)

        if pruneFunc is not None:
            assert callable(pruneFunc)

        self.prune_func = pruneFunc
        self._lock = RLock()

    def add(self, value):
        self._lock.acquire()

        try:
            self.data.addToTreeByFunction(value)
        finally:
            self._lock.release()

        data = {self.event_signaler.key: {'data': self.data}}
        self.event_signaler.signalEvent(data)

    def prune(self):
        if self.prune_func is not None:
            return criticalSection(
                self._lock, lambda: self.prune_func(dataStructure=self.data))

    def inByFunction(self, value, hashFuncList=None, depth=0):
        return criticalSection(
            self._lock,
            lambda: self.data.inByFunction(value, hashFuncList, depth))

    def getOriginalByFunction(self, value, hashFuncList=None, depth=0):
        return criticalSection(
            self._lock, lambda: self.data.getOriginalByFunction(
                value, hashFuncList, depth))
Beispiel #6
0
class RealtimePerformanceContainer(object):
    def __init__(self):
        super(RealtimePerformanceContainer, self).__init__()

        self.instance_performance = dict()
        self.location_performance = dict()

        self.event_signaler = EventSignaler('realtime_performance')

    def onTweet(self, tweet):
        assert isinstance(tweet, Tweet)

        instancePerformance = self.instance_performance.setdefault(
            tweet.instance_key, {
                'success': RealtimePerformance(),
                'geocode_fail': RealtimePerformance()
            })

        if tweet.has_user and tweet.user.is_geocoded:
            for location in tweet.user.location_geocode.all_geocode_results:
                locationPerformance = self.location_performance.setdefault(
                    tweet.instance_key,
                    dict()).setdefault(location,
                                       {'success': RealtimePerformance()})
                locationPerformance['success'].onTweet(tweet)

            instancePerformance['success'].onTweet(tweet)
        else:
            instancePerformance['geocode_fail'].onTweet(tweet)

    def signalUpdate(self):
        self.event_signaler.signalEvent({
            'instance_tweets':
            self.instance_performance,
            'location_tweets':
            self.location_performance
        })