From 48fb7a00951f91bdc707e5dd2d196e5bccb752c3 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期三, 18 六月 2025 18:41:30 +0800
Subject: [PATCH] 异常保护

---
 log_module/async_log_util.py |   86 +++++++++++++++++++++++-------------------
 1 files changed, 47 insertions(+), 39 deletions(-)

diff --git a/log_module/async_log_util.py b/log_module/async_log_util.py
index f54d5b2..cac3f10 100644
--- a/log_module/async_log_util.py
+++ b/log_module/async_log_util.py
@@ -1,7 +1,9 @@
 """
 寮傛鏃ュ織绠$悊鍣�
 """
+import logging
 import queue
+import threading
 import time
 
 from log_module.log import logger_debug, logger_system
@@ -9,10 +11,21 @@
 
 
 class AsyncLogManager:
-    __log_queue = queue.Queue()
+
+    def __init__(self):
+        self.__log_queue = queue.Queue(maxsize=10240)
 
     def __add_log(self, logger, method, *args):
-        self.__log_queue.put_nowait((logger, time.time(), method, args))
+        try:
+            self.__log_queue.put_nowait((logger, time.time(), method, args))
+        except Exception:
+            pass
+
+    def add_log(self, data):
+        try:
+            self.__log_queue.put_nowait(data)
+        except Exception:
+            pass
 
     def debug(self, logger, *args):
         self.__add_log(logger, "debug", *args)
@@ -29,74 +42,69 @@
     def exception(self, logger, *args):
         self.__add_log(logger, "exception", *args)
 
+    def get_queue_size(self):
+        """
+        鑾峰彇闃熷垪澶у皬
+        @return:
+        """
+        self.__log_queue.qsize()
+
     # 杩愯鍚屾鏃ュ織
-    def run_sync(self):
+    def run_sync(self, add_to_common_log=False):
+        # print("run_sync", add_to_common_log)
         logger_system.info(f"run_sync 绾跨▼ID:{tool.get_thread_id()}")
         while True:
             try:
                 val = self.__log_queue.get()
-                time_s = val[1]
-                cmd = val[2]
-                method = getattr(val[0], cmd)
-                d = list(val[3])
-                d[0] = f"[{tool.to_time_str(int(time_s))}.{str(time_s).split('.')[1][:3]}] " + d[0]
-                d = tuple(d)
-                method(*d)
-            except:
-                pass
+                if not add_to_common_log:
+                    time_s = val[1]
+                    cmd = val[2]
+                    method = getattr(val[0], cmd)
+                    d = list(val[3])
+                    d[0] = f"[{tool.to_time_str(int(time_s))}.{str(time_s).split('.')[1][:6]}] " + d[0]
+                    d = tuple(d)
+                    method(*d)
+                else:
+                    _common_log.add_log(val)
+            except Exception as e:
+                logging.exception(e)
 
 
 l2_data_log = AsyncLogManager()
 
-
 huaxin_l2_log = AsyncLogManager()
 
-
-log_queue = queue.Queue()
-
-
-def __add_log(logger, method, *args):
-    log_queue.put_nowait((logger, time.time(), method, args))
+_common_log = AsyncLogManager()
 
 
 def debug(logger, *args):
-    __add_log(logger, "debug", *args)
+    _common_log.debug(logger, *args)
 
 
 def info(logger, *args):
-    __add_log(logger, "info", *args)
+    _common_log.info(logger, *args)
 
 
 def warning(logger, *args):
-    __add_log(logger, "warning", *args)
+    _common_log.warning(logger, *args)
 
 
 def error(logger, *args):
-    __add_log(logger, "error", *args)
+    _common_log.error(logger, *args)
 
 
 def exception(logger, *args):
-    __add_log(logger, "exception", *args)
+    _common_log.exception(logger, *args)
 
 
 # 杩愯鍚屾鏃ュ織
 def run_sync():
     logger_system.info(f"async_log 绾跨▼ID:{tool.get_thread_id()}")
-    while True:
-        try:
-            val = log_queue.get()
-            time_s = val[1]
-            cmd = val[2]
-            method = getattr(val[0], cmd)
-            d = list(val[3])
-            d[0] = f"[{tool.to_time_str(int(time_s))}.{str(time_s).split('.')[1][:3]}] " + d[0]
-            d = tuple(d)
-            method(*d)
-        except:
-            pass
+    _common_log.run_sync()
 
 
 if __name__ == "__main__":
-    # info(logger_debug, "*-{}", "test")
-    info(logger_debug, "123123")
-    run_sync()
+    _queue = queue.Queue(maxsize=102400)
+    for i in range(200):
+        _queue.put_nowait("1")
+

--
Gitblit v1.8.0