Administrator
3 天以前 6ded141b11fa8b7bc59450d5fa61b46b250cbac3
bug修复/委托记录增量更新
3个文件已修改
37 ■■■■■ 已修改文件
cancel_strategy/s_l_h_cancel_strategy.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/data_server.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_record_manager.py 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cancel_strategy/s_l_h_cancel_strategy.py
@@ -716,7 +716,7 @@
        self.__load_data()
    def __load_data(self):
        keys = RedisUtils.keys(self.__get_redis(), "l_down_cancel_rate_human-{}")
        keys = RedisUtils.keys(self.__get_redis(), "l_down_cancel_rate_human-*")
        if keys:
            for k in keys:
                code = k.split("-")[1]
servers/data_server.py
@@ -1244,6 +1244,23 @@
                response_data = json.dumps({"code": 0, "data": l2_down_data})
            except Exception as e:
                logger_debug.exception(e)
        elif url.path == "/get_all_delegate_list":
            # 获取所有的委托列表
            try:
                ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
                update_time = ps_dict.get('update_time')
                if not update_time:
                    update_time = 0
                else:
                    update_time = int(update_time)
                record_dict = huaxin_trade_record_manager.DelegateRecordManager().get_all_delegate_records_dict()
                datas = [v for k, v in record_dict.items() if v['localUpdateTime'] > update_time]
                if datas:
                    datas.sort(key=lambda x: x['insertTime'])
                    update_time = max(datas, key=lambda x: x['localUpdateTime'])['localUpdateTime']
                response_data = json.dumps({"code": 0, "data": {'list': datas, 'update_time': update_time}})
            except Exception as e:
                logger_debug.exception(e)
        async_log_util.info(logger_request_api, f"结束请求{tool.get_thread_id()}-{url}")
        self.send_response(200)
trade/huaxin/huaxin_trade_record_manager.py
@@ -18,6 +18,7 @@
class DelegateRecordManager:
    # 当前处于委托状态的数据
    __current_delegate_records_dict_cache = {}
    __all_delegate_records_dict_cache = {}
    mysqldb = mysql_data.Mysqldb()
    __instance = None
    __queue = queue.Queue(maxsize=4096)
@@ -36,6 +37,11 @@
        cls.__current_delegate_records_dict_cache.clear()
        for d in fresults:
            cls.__current_delegate_records_dict_cache[d['orderSysID']] = d
        # 加载所有委托数据
        delegates, _ = cls.list_by_day(tool.get_now_date_str("%Y%m%d"), None)
        # 根据本地订单号映射
        for d in delegates:
            cls.__all_delegate_records_dict_cache[d["orderLocalID"]] = d
    # 获取当前处于委托状态的订单
    def list_current_delegates(self, code=None):
@@ -119,10 +125,22 @@
        else:
            if d['orderSysID'] in cls.__current_delegate_records_dict_cache:
                cls.__current_delegate_records_dict_cache.pop(d['orderSysID'])
        if d.get("localUpdateTime"):
            cls.__all_delegate_records_dict_cache[d['orderLocalID']] = d
        # pass
        cls.__queue.put_nowait(d)
    @classmethod
    def get_all_delegate_records_dict(cls):
        """
        获取所有的委托记录
        @return:
        """
        return cls.__all_delegate_records_dict_cache
    @classmethod
    def list_by_day(cls, day, min_update_time, orderStatus=[]):
        mysqldb = mysql_data.Mysqldb()
        try: