PainterBase.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import redis
  2. import time as time
  3. import logging
  4. import json
  5. from .DataStream import span_days, day_stamp, span_days, time_border, calc_interval
  6. import logging
  7. logger = logging.getLogger('PainterBase')
  8. class PainterBase(object):
  9. def __init__(self):
  10. self._redis_client = None
  11. pass
  12. def set_redis(self, rhost, rport):
  13. pool = redis.ConnectionPool(host=rhost, port=rport)
  14. self._redis_client = redis.Redis(connection_pool=pool)
  15. pass
  16. def redis_client(self):
  17. return self._redis_client
  18. def calc_time(self, reader, start_time: int, end_time: int):
  19. end_time = end_time or int(time.time())
  20. if start_time is None or start_time > end_time:
  21. start_time = end_time - 7200
  22. stime = lambda t: time.strftime('%y-%m-%d %H:%M:%S', time.localtime(t))
  23. interval = calc_interval(start_time, end_time)
  24. logger.debug("start_time %d=%s end_time=%s interval=%d", start_time, stime(start_time), stime(end_time), interval)
  25. days = span_days(start_time, end_time)
  26. sdays = [stime(day) for day in days]
  27. logger.debug(sdays)
  28. return days, start_time, end_time, interval
  29. def calc_xticks(self,start,end,interval):
  30. ticks = []
  31. _start = start
  32. while True:
  33. if start < end:
  34. ticks.append(start - _start)
  35. if start % interval == 0:
  36. start += interval
  37. else:
  38. start += interval - start % interval
  39. else:
  40. ticks.append(end - _start)
  41. break
  42. return ticks