From ed73a94a4f6066ca0a0e92b08ad673fcbbea0efe Mon Sep 17 00:00:00 2001 From: Franklin-F Date: Wed, 21 May 2025 01:04:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BA=20upsert=5Fvideo=20?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=BC=93=E5=86=B2?= =?UTF-8?q?=E5=8C=BA=E9=95=BF=E5=BA=A6=E5=92=8C=E6=93=8D=E4=BD=9C=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=9A=84=E8=B0=83=E8=AF=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/DB.py b/DB.py index 565e407..e654217 100644 --- a/DB.py +++ b/DB.py @@ -1,4 +1,6 @@ import json +from turtledemo.penrose import start + import redis import pymysql import time @@ -445,7 +447,7 @@ class DBSA: push_record = staticmethod(lambda row: print("[退回Redis]", row["v_xid"])) @classmethod - def upsert_video(cls, data: Dict): + def upsert_video(cls, data): data = copy.deepcopy(data) data.setdefault("a_id", 0) data.setdefault("history_status", "") @@ -476,13 +478,17 @@ class DBSA: with cls._lock: cls._buf_op.append(op_row) cls._buf_vid.append(vid_row) - - if len(cls._buf_op) >= cls.FLUSH_EVERY_ROWS: + buf_len = len(cls._buf_vid) + print(f"DB缓冲 -> xid={data['v_xid']}, level={data['level']}, buffer={buf_len}") + if buf_len >= cls.FLUSH_EVERY_ROWS: need_flush = True + flush_reason = "ROWS" elif time.time() - cls._last_flush >= cls.FLUSH_INTERVAL: need_flush = True + flush_reason = "TIME" if need_flush: + print(f"DBSA 落 ({flush_reason}) ...") cls.flush() @classmethod @@ -519,11 +525,13 @@ class DBSA: if not op_rows and not vid_rows: return - + start = time.time() try: cls._bulk_insert(op_rows) cls._bulk_upsert(vid_rows) + elapsed = time.time() - start + print(f"[DBSA] 成 op={len(op_rows)} video={len(vid_rows)} time={elapsed:.3f}s") except Exception as e: - print("[DBSA] 批写失败:", e) + print(f"[DBSA] flush FAIL: {e} op={len(op_rows)} video={len(vid_rows)}") for row in vid_rows: cls.push_record(row)