12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from .ChannelCalc import ChannelCalc, detail_pathes
- from .algorithm import calc_chspeed, calc_chratio, calc_commit, calc_chprice, calc_chspeed_ratio
- from .DataStream import EChPosmap as pos_map
- from .DataStream import ch_calc_cfgs, mktime
- from .ChannelReader import ChannelReader
- from .chs_type_spec import type_spec_chs, ch_type_spec
- from .chs_manager import chs_manager
- import numpy as np
- import time as time
- import json
- import redis
- import logging
- logger = logging.getLogger('ChSpeedControlCalc')
- class ChSpeedControlCalc(ChannelCalc):
- def _calc_pmf(self, _commits, _succs):
- pass
- def _collect_data(self):
- start_period, ratio_period, speed_period, monitor_period, cdf_speed_period = ch_calc_cfgs()
- reader = self._reader()
- end_time = int(time.time())
- # end_time = mktime('2022-11-06 20:00:00')
- days, start_time, end_time = self.calc_time(reader, end_time - start_period, end_time)
- day_stamp = days[0]
- end_pos = end_time - day_stamp
- tuple_pathes = reader.many_tuple_path(days, card_types=set([4, 5, 6]))
- gen = detail_pathes(reader, tuple_pathes, days)
- manager = chs_manager()
- for _name, _card_type, _spec, _data in gen:
- manager.add(_name, _card_type, _spec, _data, end_pos)
- manager.cur_speed()
- manager.normal_speed()
- manager.optimize()
- reckons = manager.get_reckon()
- return reckons
- def _calc_handler(self, rclient):
- result = self._collect_data()
- logger.debug(result)
- if len(result) != 0:
- rclient.set(f"nc_refill_channel_control_speed", json.dumps(result))
- rclient.publish('refill', json.dumps({'type': 'channel_speed', 'value': 0}))
- return 180
|