From b79f40afbe849f56f7c2db94e9bcebf3f5e92ec6 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 04 八月 2023 09:47:45 +0800
Subject: [PATCH] redis连接池归还

---
 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 6252413..71a7f53 100644
--- a/code_attribute/gpcode_first_screen_manager.py
+++ b/code_attribute/gpcode_first_screen_manager.py
@@ -8,13 +8,16 @@
 from db.redis_manager import RedisUtils
 from utils import tool
 from db import redis_manager
-from third_data import  block_info
+from third_data import block_info
 
 __redisManager = redis_manager.RedisManager(0)
 
 
 def __get_redis():
     return __redisManager.getRedis()
+
+
+__first_code_data_cache = {}
 
 
 # 淇濆瓨棣栨澘绁ㄧ殑鏁版嵁
@@ -24,7 +27,8 @@
 # 4.鏈�杩戠偢寮�鏃堕棿
 # 5.鏄惁宸茬粡娑ㄥ仠
 def __save_first_code_data(code, data):
-    RedisUtils.setex(__redisManager.getRedis(),f"first_code_data-{code}", tool.get_expire(), json.dumps(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))
 
 
 def __get_first_code_data(code):
@@ -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:
+        redis.connection_pool.disconnect()
 
 
 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:
-            redis.srem("first_no_screen_codes", code)
+    try:
+        if codes:
+            for code in codes:
+                RedisUtils.srem(redis, "first_no_screen_codes", code, auto_free= False)
+    finally:
+        redis.connection_pool.disconnect()
 
 
 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