From e7f8c6013d777dd5ba10b8d548d2d3db6158d37a Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 08 九月 2022 17:04:27 +0800 Subject: [PATCH] '完善' --- l2_data_manager.py | 51 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 30 insertions(+), 21 deletions(-) diff --git a/l2_data_manager.py b/l2_data_manager.py index ffa57c1..2ece3bd 100644 --- a/l2_data_manager.py +++ b/l2_data_manager.py @@ -4,6 +4,7 @@ from datetime import datetime import data_process +import l2_data_util import mysql import gpcode_manager @@ -19,6 +20,9 @@ local_latest_datas = {} # 鏈湴浠婃棩鏁版嵁 local_today_datas = {} +# 鏈湴鎵嬫暟+鎿嶄綔閭g被鍨嬬粍鎴愮殑涓存椂鍙橀噺 +# 鐢ㄤ簬鍔犲揩鏁版嵁澶勭悊锛岀敤绌烘崲鏃堕棿 +local_today_num_operate_map = {} class L2DataException(Exception): @@ -125,26 +129,15 @@ datas = [] keys = redis.keys("l2-{}-*".format(code)) for k in keys: - key = k.replace("l2-", "") - split_data = key.split("-") - code = split_data[0] - operateType = split_data[1] - time = split_data[2] - num = split_data[3] - price = split_data[4] - limitPrice = split_data[5] - cancelTime = split_data[6] - cancelTimeUnit = split_data[7] - item = {"operateType": operateType, "time": time, "num": num, "price": price, "limitPrice": limitPrice, - "cancelTime": cancelTime, "cancelTimeUnit": cancelTimeUnit} value = redis.get(k) - json_value = json.loads(value) - _data = {"key": key, "val": item, "re": json_value["re"], "index": int(json_value["index"])} + _data = l2_data_util.l2_data_key_2_obj(k, value) datas.append(_data) # 鎺掑簭 new_datas = sorted(datas, key=lambda e: (int(e.__getitem__('val')["time"].replace(":", "")), e.__getitem__('index'))) - local_today_datas.setdefault(code, new_datas) + local_today_datas[code] = new_datas + # 鏍规嵁浠婃棩鏁版嵁鍔犺浇 + l2_data_util.load_num_operate_map(local_today_num_operate_map, code, local_today_datas.get(code), force) def saveL2Data(code, datas): @@ -233,9 +226,13 @@ dataIndexs.setdefault(key, len(datas) - 1) for key in same_time_num: if same_time_num[key] > 50: - # TODO 淇濆瓨鏁版嵁 - redis = _redisManager.getRedis() - redis.set("big_data-{}-{}".format(code, int(round(t.time() * 1000))), str) + # 鍙兘淇濆瓨杩�3s鐨勬暟鎹� + ts1 = l2_data_util.get_time_as_seconds(datas[-1]["val"]["time"]) + ts_now = l2_data_util.get_time_as_seconds(datetime.now().strftime("%H:%M:%S")) + if abs(ts1 - ts_now) <= 3: + # TODO 淇濆瓨鏁版嵁 + redis = _redisManager.getRedis() + redis.set("big_data-{}-{}".format(code, int(round(t.time() * 1000))), str) return day, client, channel, code, datas @@ -317,7 +314,8 @@ if len(datas) > 0: # 鍒ゆ柇浠锋牸鍖洪棿鏄惁姝g‘ if not data_process.is_same_code_with_price(code, float(datas[0]["val"]["price"])): - raise L2DataException(L2DataException.CODE_PRICE_ERROR, "鑲′环涓嶅尮閰�") + + raise L2DataException(L2DataException.CODE_PRICE_ERROR, "鑲′环涓嶅尮閰� code-{} price-{}".format(code,datas[0]["val"]["price"])) # 鍔犺浇鍘嗗彶鏁版嵁 load_l2_data(code) # 绾犳鏁版嵁 @@ -326,6 +324,8 @@ if len(add_datas) > 0: # 鎷兼帴鏁版嵁 local_today_datas[code].extend(add_datas) + l2_data_util.load_num_operate_map(local_today_num_operate_map, code, add_datas) + latest_time = add_datas[len(add_datas) - 1]["val"]["time"] # 鏃堕棿宸笉鑳藉お澶ф墠鑳藉鐞� if __is_same_time(now_time_str, latest_time): @@ -697,8 +697,17 @@ if __name__ == "__main__": - print("big_data-{}-{}".format("123", int(round(t.time() * 1000)))) - pass + # 鍒犻櫎澶ф暟鎹� + redis = redis_manager.RedisManager(1).getRedis() + keys = redis.keys("big_data*") + for key in keys: + redis.delete(key) + # print("big_data-{}-{}".format("123", int(round(t.time() * 1000)))) + # load_l2_data("002868") + # keys= local_today_num_operate_map["002868"] + # for k in keys: + # print(len( local_today_num_operate_map["002868"][k])) + # pass # __set_buy_compute_start_data("000000", 100, 1) # __set_buy_compute_start_data("000000", 100) # __set_l2_data_latest_count("000333", 20) -- Gitblit v1.8.0