From 520af08aa035352ded96a43d7fbf946fd3319a62 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 27 十二月 2023 18:04:46 +0800 Subject: [PATCH] 输出api修改 --- third_data/data_server.py | 140 ++++++++++++++++++++++++---------------------- 1 files changed, 72 insertions(+), 68 deletions(-) diff --git a/third_data/data_server.py b/third_data/data_server.py index f9ca98b..cd80e3d 100644 --- a/third_data/data_server.py +++ b/third_data/data_server.py @@ -517,78 +517,82 @@ response_data = json.dumps({"code": 1, "msg": "璇蜂笂浼燾ode"}) elif url.path == "/get_last_trade_day_reasons": - # 璁$畻骞冲潎娑ㄥ箙 - def get_limit_rate_list(codes): - if not codes: - return [] - need_request_codes = set() - if tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") < 0: - need_request_codes |= set(codes) - else: - now_time = time.time() - for c in codes: - if c not in self.__code_limit_rate_dict: - need_request_codes.add(c) - elif now_time - self.__code_limit_rate_dict[c][1] > 60: - need_request_codes.add(c) - if need_request_codes: - _limit_rate_list = HistoryKDatasUtils.get_codes_limit_rate(list(need_request_codes)) - for d in _limit_rate_list: - self.__code_limit_rate_dict[d[0]] = (d[1], time.time()) - return [(c_, self.__code_limit_rate_dict[c_][0]) for c_ in codes] + try: + # 璁$畻骞冲潎娑ㄥ箙 + def get_limit_rate_list(codes): + if not codes: + return [] + need_request_codes = set() + if tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") < 0: + need_request_codes |= set(codes) + else: + now_time = time.time() + for c in codes: + if c not in self.__code_limit_rate_dict: + need_request_codes.add(c) + elif now_time - self.__code_limit_rate_dict[c][1] > 60: + need_request_codes.add(c) + if need_request_codes: + _limit_rate_list = HistoryKDatasUtils.get_codes_limit_rate(list(need_request_codes)) + for d in _limit_rate_list: + self.__code_limit_rate_dict[d[0]] = (d[1], time.time()) + return [(c_, self.__code_limit_rate_dict[c_][0]) for c_ in codes] - # 鑾峰彇涓婁釜浜ゆ槗鏃ョ殑鐩稿悓娑ㄥ仠鍘熷洜鐨勪唬鐮佷俊鎭� - ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()]) - code = ps_dict["code"] - # 鑾峰彇鏄ㄦ棩娑ㄥ仠鏁版嵁 - day = HistoryKDatasUtils.get_previous_trading_date_cache(tool.get_now_date_str()) + # 鑾峰彇涓婁釜浜ゆ槗鏃ョ殑鐩稿悓娑ㄥ仠鍘熷洜鐨勪唬鐮佷俊鎭� + ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()]) + code = ps_dict["code"] + # 鑾峰彇鏄ㄦ棩娑ㄥ仠鏁版嵁 + day = HistoryKDatasUtils.get_previous_trading_date_cache(tool.get_now_date_str()) - limit_up_records = kpl_data_manager.KPLLimitUpDataRecordManager.list_all_cache(day) - reasons = [] - for d in limit_up_records: - if d[3] == code: - reasons.append(d) - # 鑾峰彇浠g爜鐨勫師鍥� - if reasons: - reasons = list(reasons) - reasons.sort(key=lambda x: x[9]) - reason = reasons[-1][2] - # 鑾峰彇娑ㄥ仠鏁版嵁 - datas = self.__kplDataManager.get_from_file_cache(kpl_util.KPLDataType.LIMIT_UP, day) - # (浠g爜,鍚嶇О,棣栨娑ㄥ仠鏃堕棿,鏈�杩戞定鍋滄椂闂�,鍑犳澘,娑ㄥ仠鍘熷洜,鏉垮潡,瀹為檯娴侀��,涓诲姏鍑�棰�,娑ㄥ仠鍘熷洜浠g爜,娑ㄥ仠鍘熷洜浠g爜鏁伴噺) - yesterday_result_list = [] - percent_rate = 0 - if datas: - yesterday_codes = set() - for d in datas: - if d[5] == reason: - yesterday_codes.add(d[0]) - # 鑾峰彇娑ㄥ箙 - limit_rate_list = get_limit_rate_list(yesterday_codes) - limit_rate_dict = {} - if limit_rate_list: - total_rate = 0 - for d in limit_rate_list: - limit_rate_dict[d[0]] = d[1] - total_rate += d[1] - percent_rate = round(total_rate / len(limit_rate_list), 2) + limit_up_records = kpl_data_manager.KPLLimitUpDataRecordManager.list_all_cache(day) + reasons = [] + for d in limit_up_records: + if d[3] == code: + reasons.append(d) + # 鑾峰彇浠g爜鐨勫師鍥� + if reasons: + reasons = list(reasons) + reasons.sort(key=lambda x: x[9]) + reason = reasons[-1][2] + # 鑾峰彇娑ㄥ仠鏁版嵁 + datas = self.__kplDataManager.get_from_file_cache(kpl_util.KPLDataType.LIMIT_UP, day) + # (浠g爜,鍚嶇О,棣栨娑ㄥ仠鏃堕棿,鏈�杩戞定鍋滄椂闂�,鍑犳澘,娑ㄥ仠鍘熷洜,鏉垮潡,瀹為檯娴侀��,涓诲姏鍑�棰�,娑ㄥ仠鍘熷洜浠g爜,娑ㄥ仠鍘熷洜浠g爜鏁伴噺) + yesterday_result_list = [] + percent_rate = 0 + if datas: + yesterday_codes = set() + for d in datas: + if d[5] == reason: + yesterday_codes.add(d[0]) + # 鑾峰彇娑ㄥ箙 + limit_rate_list = get_limit_rate_list(yesterday_codes) + limit_rate_dict = {} + if limit_rate_list: + total_rate = 0 + for d in limit_rate_list: + limit_rate_dict[d[0]] = d[1] + total_rate += d[1] + percent_rate = round(total_rate / len(limit_rate_list), 2) - for d in datas: - if d[5] == reason: - yesterday_codes.add(d[0]) - if d[0] != code: - # (浠g爜,鍚嶇О, 娑ㄥ箙) - yesterday_result_list.append((d[0], d[1], limit_rate_dict.get(d[0]))) + for d in datas: + if d[5] == reason: + yesterday_codes.add(d[0]) + if d[0] != code: + # (浠g爜,鍚嶇О, 娑ㄥ箙) + yesterday_result_list.append((d[0], d[1], limit_rate_dict.get(d[0]))) - current_limit_up_list = kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas - current_result_list = [] - if current_limit_up_list: - for c in current_limit_up_list: - if c[5] == reason and c[0] != code: - current_result_list.append((c[0], c[1])) - response_data = json.dumps({"code": 0, "data": {"reason": reason, "reason_rate": percent_rate, - "data": {"yesterday": yesterday_result_list, - "current": current_result_list}}}) + current_limit_up_list = kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas + current_result_list = [] + if current_limit_up_list: + for c in current_limit_up_list: + if c[5] == reason and c[0] != code: + current_result_list.append((c[0], c[1])) + response_data = json.dumps({"code": 0, "data": {"reason": reason, "reason_rate": percent_rate, + "data": {"yesterday": yesterday_result_list, + "current": current_result_list}}}) + except Exception as e: + logger_debug.exception(e) + raise e else: response_data = json.dumps({"code": 1, "msg": "鏄ㄦ棩鏈定鍋�"}) -- Gitblit v1.8.0