diff --git a/DB.py b/DB.py index 06e7552..450efd3 100644 --- a/DB.py +++ b/DB.py @@ -254,11 +254,28 @@ class DBVidcon: @redis_retry(max_retries=3) def push_report(self, raws): - """向 report_queue 写入数据""" + """原子操作:清空列表并写入新数据""" if isinstance(raws, str): raws = [raws] - self.redis.rpush(self.report_list, *raws) - logger.info(f"[写入report] 已推入 {len(raws)} 条") + + with self.redis.pipeline() as pipe: + # 开始事务 + pipe.multi() + + # 删除列表 + pipe.delete(self.report_list) + + # 如果有新数据,则推入 + if raws: + pipe.rpush(self.report_list, *raws) + + # 执行事务 + pipe.execute() + + if raws: + logger.info(f"[写入report] 原子操作:已清空并推入 {len(raws)} 条新数据") + else: + logger.info(f"[写入report] 原子操作:已清空列表") @redis_retry(max_retries=3) def get_proxy_agent_dict(self) -> dict: