From b4480ad745510c8e81c88c20fb67cb65eef79cc5 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 17 八月 2023 11:05:23 +0800
Subject: [PATCH] ++++++++++++++++ bug修复

---
 code_attribute/gpcode_first_screen_manager.py |   42 ++++++++++++++++++++++++++++++------------
 1 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/code_attribute/gpcode_first_screen_manager.py b/code_attribute/gpcode_first_screen_manager.py
index 5bc3366..8203a35 100644
--- a/code_attribute/gpcode_first_screen_manager.py
+++ b/code_attribute/gpcode_first_screen_manager.py
@@ -5,9 +5,9 @@
 # 璁剧疆棣栨澘鏈瓫閫夌殑鐩爣绁�
 import json
 
-from db.redis_manager import RedisUtils
+from db.redis_manager_delegate import RedisUtils
 from utils import tool
-from db import redis_manager
+from db import redis_manager_delegate as redis_manager
 from third_data import block_info
 
 __redisManager = redis_manager.RedisManager(0)
@@ -17,6 +17,9 @@
     return __redisManager.getRedis()
 
 
+__first_code_data_cache = {}
+
+
 # 淇濆瓨棣栨澘绁ㄧ殑鏁版嵁
 # 1.棣栨娑ㄥ仠鏃堕棿
 # 2.鏈�杩戞定鍋滄椂闂�
@@ -24,6 +27,7 @@
 # 4.鏈�杩戠偢寮�鏃堕棿
 # 5.鏄惁宸茬粡娑ㄥ仠
 def __save_first_code_data(code, data):
+    tool.CodeDataCacheUtil.set_cache(__first_code_data_cache, code, data)
     RedisUtils.setex(__redisManager.getRedis(), f"first_code_data-{code}", tool.get_expire(), json.dumps(data))
 
 
@@ -34,25 +38,39 @@
     return json.loads(val)
 
 
+def __get_first_code_data_cache(code):
+    cache_result = tool.CodeDataCacheUtil.get_cache(__first_code_data_cache, code)
+    if cache_result[0]:
+        return cache_result[1]
+    val = __get_first_code_data(code)
+    tool.CodeDataCacheUtil.set_cache(__first_code_data_cache, code, val)
+    return val
+
+
 # 娣诲姞杩涢鏉挎湭绛涢�夌エ
 def __add_first_no_screen_codes(codes):
     redis = __redisManager.getRedis()
-    if codes:
-        for code in codes:
-            RedisUtils.sadd(redis, "first_no_screen_codes", code)
-        RedisUtils.expire(redis, "first_no_screen_codes", tool.get_expire())
+    try:
+        if codes:
+            for code in codes:
+                RedisUtils.sadd(redis, "first_no_screen_codes", code, auto_free=False)
+            RedisUtils.expire(redis, "first_no_screen_codes", tool.get_expire(), auto_free=False)
+    finally:
+        RedisUtils.realse(redis)
 
 
 def clear_first_no_screen_codes():
-    redis = __redisManager.getRedis()
-    RedisUtils.delete(redis, "first_no_screen_codes")
+    RedisUtils.delete(__redisManager.getRedis(), "first_no_screen_codes")
 
 
 def __remove_first_no_screen_codes(codes):
     redis = __redisManager.getRedis()
-    if codes:
-        for code in codes:
-            RedisUtils.srem(redis, "first_no_screen_codes", code)
+    try:
+        if codes:
+            for code in codes:
+                RedisUtils.srem(redis, "first_no_screen_codes", code, auto_free= False)
+    finally:
+        RedisUtils.realse(redis)
 
 
 def __get_first_no_screen_codes():
@@ -67,7 +85,7 @@
     for price in prices:
         code = price["code"]
         time_ = price["time"]
-        old_data = __get_first_code_data(code)
+        old_data = __get_first_code_data_cache(code)
         if old_data is None:
             continue
         limit_up = price["limit_up"]

--
Gitblit v1.8.0