From ba52d7ac92a36f413eacaa686f8535e859664ec6 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 28 八月 2023 09:45:11 +0800
Subject: [PATCH] bug修改

---
 code_attribute/code_volumn_manager.py |   88 ++++++++++++++++++++++++++++++--------------
 1 files changed, 60 insertions(+), 28 deletions(-)

diff --git a/code_attribute/code_volumn_manager.py b/code_attribute/code_volumn_manager.py
index 122657e..89332a2 100644
--- a/code_attribute/code_volumn_manager.py
+++ b/code_attribute/code_volumn_manager.py
@@ -7,9 +7,9 @@
 # yesterday 鏄ㄥぉ鐨勯噺
 import json
 
-from db.redis_manager import RedisUtils
+from db.redis_manager_delegate import RedisUtils
 from utils import global_util, tool
-from db import redis_manager
+from db import redis_manager_delegate as redis_manager
 from log_module.log import logger_day_volumn
 
 __redis_manager = redis_manager.RedisManager(0)
@@ -20,8 +20,12 @@
     redis = __redis_manager.getRedis()
     global_util.max60_volumn[code] = (max60, max60_day)
     global_util.yesterday_volumn[code] = yesterday
-    RedisUtils.setex(redis, "volumn_max60-{}".format(code), tool.get_expire(), json.dumps((max60, max60_day)))
-    RedisUtils.setex(redis, "volumn_yes-{}".format(code), tool.get_expire(), yesterday)
+    try:
+        RedisUtils.setex(redis, "volumn_max60-{}".format(code), tool.get_expire(), json.dumps((max60, max60_day)),
+                         auto_free=False)
+        RedisUtils.setex(redis, "volumn_yes-{}".format(code), tool.get_expire(), yesterday, auto_free=False)
+    finally:
+        RedisUtils.realse(redis)
 
 
 # 鑾峰彇鍘嗗彶閲�
@@ -29,29 +33,54 @@
     max60 = global_util.max60_volumn.get(code)
     yesterday = global_util.yesterday_volumn.get(code)
     redis = __redis_manager.getRedis()
-    if max60 is None:
-        max60 = redis.get("volumn_max60-{}".format(code))
-        if max60:
-            max60 = json.loads(max60)
-    if yesterday is None:
-        yesterday = redis.get("volumn_yes-{}".format(code))
-    return max60, yesterday
+    try:
+        if max60 is None:
+            max60 = RedisUtils.get(redis, "volumn_max60-{}".format(code), auto_free=False)
+            if max60:
+                max60 = json.loads(max60)
+        if yesterday is None:
+            yesterday = RedisUtils.get(redis, "volumn_yes-{}".format(code), auto_free=False)
+        return max60, yesterday
+    finally:
+        RedisUtils.realse(redis)
 
+
+__today_volumn_cache = {}
+
+
+# 閲忕殑鍙樺寲澶т繚瀛�
 
 # 璁剧疆浠婃棩閲�
 def set_today_volumn(code, volumn):
     logger_day_volumn.info("code:{} volumn:{}".format(code, volumn))
-    redis = __redis_manager.getRedis()
     global_util.today_volumn[code] = volumn
-    RedisUtils.setex(redis, "volumn_today-{}".format(code), tool.get_expire(), volumn)
+    # 鏈�1000鎵嬬殑鍙樺寲鎵嶄繚瀛�
+    if code in __today_volumn_cache and volumn - __today_volumn_cache[code] < 100000:
+        return
+    __today_volumn_cache[code] = volumn
+    RedisUtils.setex(__redis_manager.getRedis(), "volumn_today-{}".format(code), tool.get_expire(), volumn)
+
+
+# datas:[(code, volumn)]
+def set_today_volumns(datas):
+    pipe = __redis_manager.getRedis().pipeline()
+    for d in datas:
+        code, volumn = d
+        logger_day_volumn.info("code:{} volumn:{}".format(code, volumn))
+        global_util.today_volumn[code] = volumn
+        # 鏈�1000鎵嬬殑鍙樺寲鎵嶄繚瀛�
+        if code in __today_volumn_cache and volumn - __today_volumn_cache[code] < 100000:
+            continue
+        __today_volumn_cache[code] = volumn
+        RedisUtils.setex(pipe, "volumn_today-{}".format(code), tool.get_expire(), volumn)
+    pipe.execute()
 
 
 # 鑾峰彇浠婃棩閲�
 def get_today_volumn(code):
     _volumn = global_util.today_volumn.get(code)
     if _volumn is None:
-        redis = __redis_manager.getRedis()
-        _volumn = redis.get("volumn_today-{}".format(code))
+        _volumn = RedisUtils.get(__redis_manager.getRedis(), "volumn_today-{}".format(code))
     return _volumn
 
 
@@ -92,19 +121,22 @@
 # 灏嗛噺浠庢暟鎹簱鍔犲叆鍐呭瓨
 def load():
     redis = __redis_manager.getRedis()
-    keys = RedisUtils.keys(redis, "volumn_max60-*")
-    if keys is not None:
-        for k in keys:
-            code = k.split("-")[1]
-            max60_volumn = redis.get(k)
-            if max60_volumn:
-                max60_volumn = json.loads(max60_volumn)
-            global_util.max60_volumn[code] = max60_volumn
-    keys = RedisUtils.keys(redis, "volumn_yes-*")
-    if keys is not None:
-        for k in keys:
-            code = k.split("-")[1]
-            global_util.yesterday_volumn[code] = redis.get(k)
+    try:
+        keys = RedisUtils.keys(redis, "volumn_max60-*", auto_free=False)
+        if keys is not None:
+            for k in keys:
+                code = k.split("-")[1]
+                max60_volumn = RedisUtils.get(redis, k, auto_free=False)
+                if max60_volumn:
+                    max60_volumn = json.loads(max60_volumn)
+                global_util.max60_volumn[code] = max60_volumn
+        keys = RedisUtils.keys(redis, "volumn_yes-*", auto_free=False)
+        if keys is not None:
+            for k in keys:
+                code = k.split("-")[1]
+                global_util.yesterday_volumn[code] = RedisUtils.get(redis, k, auto_free=False)
+    finally:
+        RedisUtils.realse(redis)
 
 
 if __name__ == "__main__":

--
Gitblit v1.8.0