import redis import time as time import logging import json from .DataStream import span_days, day_stamp, span_days, time_border, calc_interval import logging logger = logging.getLogger('PainterBase') class PainterBase(object): def __init__(self): self._redis_client = None pass def set_redis(self, rhost, rport): pool = redis.ConnectionPool(host=rhost, port=rport) self._redis_client = redis.Redis(connection_pool=pool) pass def redis_client(self): return self._redis_client def calc_time(self, reader, start_time: int, end_time: int): if end_time is None: end_time = int(time.time()) end_time = reader.near_stamp(end_time, False) if end_time is None: raise Exception('data is empty') if start_time is None or start_time > end_time: start_time = end_time - 7200 start_time = reader.near_stamp(start_time, True) if start_time is None: raise Exception('data is empty') stime = lambda t: time.strftime('%d-%H:%M:%S', time.localtime(t)) logger.debug("near_stamp start_time %d , %s end_time=%s", start_time, stime(start_time), stime(end_time)) interval = calc_interval(start_time, end_time) start_time = time_border(interval, start_time, True) end_time = time_border(interval, end_time, False) logger.debug("time_border start_time %d , %s end_time=%s", start_time, stime(start_time), stime(end_time)) days = span_days(start_time, end_time) stime = lambda t: time.strftime('%d-%H:%M:%S', time.localtime(t)) sdays = [stime(day) for day in days] logger.debug(sdays) return days, start_time, end_time, interval