Example #1
0
class UpdatingLogger(object):
    date_format = '%Y.%m.%d..%H.%M.%S'

    def __init__(self, connection, prefix, name):
        self.conn = connection
        self.prefix = prefix
        self.name = name
        self.id_key = RedisKey('%s:id' % self.prefix, self.conn)
        self.set_key = RedisKey('%s:set' % self.prefix, self.conn)

    def save(self, date, value, t):
        id = self.id_key.incr()
        key = '%s:obj:%s' % (self.prefix, id)
        date_str = date.strftime(self.date_format)
        self.conn.hmset(key, {'value': value, 'date': date_str, 'time': t})
        self.set_key.sadd(id)

    def __getitem__(self, k):
        """
        Retrieves an item or slice from the set of results.
        """
        if not isinstance(k, slice):
            raise TypeError

        num = k.stop - k.start
        key = self.set_key.redis_key
        p = self.prefix
        get = [
            '%s:obj:*->value' % p,
            '%s:obj:*->date' % p,
            '%s:obj:*->time' % p
        ]
        return self._to_python(
            self.conn.sort(key, get=get, start=k.start, num=num, desc=True))

    def count(self):
        return self.set_key.scard()

    def _get_date(self, value):
        return datetime.datetime.strptime(value, self.date_format)

    def _clone(self):
        return self

    def _to_python(self, result):
        output = []

        for i in range(len(result))[::3]:
            obj = {}
            obj['value'] = result[i]
            obj['date'] = self._get_date(result[i + 1])
            obj['time'] = result[i + 2]
            output.append(obj)

        return output
Example #2
0
class UpdatingLogger(object):
    date_format = '%Y.%m.%d..%H.%M.%S' 
    
    def __init__(self, connection, prefix, name):
        self.conn = connection
        self.prefix = prefix
        self.name = name
        self.id_key = RedisKey('%s:id' % self.prefix, self.conn)
        self.set_key = RedisKey('%s:set' % self.prefix, self.conn)
        
    def save(self, date, value, t):
        id = self.id_key.incr()
        key = '%s:obj:%s' % (self.prefix, id)
        date_str = date.strftime(self.date_format)
        self.conn.hmset(key, {'value': value, 'date': date_str, 'time': t})
        self.set_key.sadd(id)

    def __getitem__(self, k):
        """
        Retrieves an item or slice from the set of results.
        """
        if not isinstance(k, slice):
            raise TypeError
        
        num = k.stop - k.start
        key = self.set_key.redis_key
        p = self.prefix
        get = ['%s:obj:*->value' % p, '%s:obj:*->date' % p, '%s:obj:*->time' % p]
        return self._to_python(self.conn.sort(key, get=get, start=k.start, num=num, desc=True))
    
    def count(self):
        return self.set_key.scard()
    
    def _get_date(self, value):
        return datetime.datetime.strptime(value, self.date_format)
    
    def _clone(self):
        return self
    
    def _to_python(self, result):
        output = []
        
        for i in range(len(result))[::3]:
            obj = {}
            obj['value'] = result[i]
            obj['date'] = self._get_date(result[i+1])
            obj['time'] = result[i+2]
            output.append(obj)
            
        return output