NeterrlWriter.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # from . import DataHandler #此时是导入文件
  2. from .DataStream import DataWriteStream, NetPosmap, day_stamp
  3. import numpy as np
  4. __all__ = ['NeterrWriter']
  5. class NeterrWriter(DataWriteStream, NetPosmap):
  6. def write(self, method, params):
  7. if method == 'net_succ':
  8. self._onSucc(params)
  9. elif method == 'net_fail':
  10. self._onFail(params)
  11. else:
  12. pass
  13. def _onSucc(self, params):
  14. def parse(input):
  15. return input['channel_name'], input['time']
  16. chname, time = parse(params)
  17. path, pos = self.path_pos(chname, time)
  18. self.file[path][self._pos_map['succ_count'], pos] += 1
  19. pass
  20. def _onFail(self, params):
  21. def parse(input):
  22. return input['channel_name'], input['time']
  23. chname, time = parse(params)
  24. path, pos = self.path_pos(chname, time)
  25. self.file[path][self._pos_map['fail_count'], pos] += 1
  26. pass
  27. def path_pos(self, chname, time):
  28. today = day_stamp(time)
  29. path = f'/{self._version}/{today}/{chname}'
  30. hfive = self.file
  31. if path not in hfive:
  32. dim = len(self._pos_map)
  33. hfive[path] = np.zeros((dim, 86400))
  34. return path, time - today
  35. pass