CalcBase.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import redis
  2. import time as time
  3. import logging
  4. import json
  5. from .DataStream import span_days
  6. import traceback
  7. import logging
  8. logger = logging.getLogger('CalcBase')
  9. class CalcBase(object):
  10. def __init__(self):
  11. self._mQuit = False
  12. self._mRHost = ''
  13. self._mRPort = 6379
  14. def set_redis(self, rhost, rport):
  15. self._mRHost = rhost
  16. self._mRPort = rport
  17. def stop(self):
  18. self._mquit = True
  19. def _calc_handler(self, rclient):
  20. return 1
  21. def _reader(self):
  22. return None
  23. def run(self):
  24. def redis_client():
  25. pool = redis.ConnectionPool(host=self._mRHost, port=self._mRPort)
  26. client = redis.Redis(connection_pool=pool)
  27. return client
  28. client = None
  29. sleep_time = 1
  30. while self._mQuit == False:
  31. try:
  32. if client is None:
  33. client = redis_client()
  34. sleep_time = self._calc_handler(client)
  35. except redis.RedisError as ex:
  36. logger.error(ex)
  37. except Exception as ex:
  38. logger.error(ex)
  39. logger.error(traceback.format_exc())
  40. finally:
  41. time.sleep(sleep_time)
  42. def calc_time(self, reader, start_time: int, end_time: int):
  43. end_time = end_time or int(time.time())
  44. if start_time is None or start_time > end_time:
  45. start_time = end_time - 7200
  46. days = span_days(start_time, end_time)
  47. # stime = lambda t: time.strftime('%d-%H:%M:%S', time.localtime(t))
  48. # sdays = [stime(day) for day in days]
  49. # logger.debug(sdays)
  50. return days, start_time, end_time