From 1225b6cbf0a028b765a0ab6d784bcb80459a67bb Mon Sep 17 00:00:00 2001 From: yj <2077506045@qq.com> Date: 星期三, 23 七月 2025 17:59:54 +0800 Subject: [PATCH] 功能更新 --- app/services/redis_queue.py | 27 ++++++++++++++++----------- 1 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/services/redis_queue.py b/app/services/redis_queue.py index 792bcc5..54af4a4 100644 --- a/app/services/redis_queue.py +++ b/app/services/redis_queue.py @@ -26,9 +26,14 @@ """鑾峰彇澶勭悊鐘舵�侀敭""" return f"{self.processing_prefix}{from_user}" - def get_conversation_key(self, from_user: str) -> str: + def get_conversation_key(self, from_user: str, group: str = None) -> str: """鑾峰彇鐢ㄦ埛瀵硅瘽ID閿�""" - return f"{self.conversation_prefix}{from_user}" + if group: + # 鍩轰簬鐢ㄦ埛+缇ょ粍鐢熸垚conversation_key锛岀‘淇濅笉鍚岀兢缁勭殑瀵硅瘽鐙珛 + return f"{self.conversation_prefix}{from_user}:{group}" + else: + # 鍏煎鏃х増鏈紝浠呭熀浜庣敤鎴� + return f"{self.conversation_prefix}{from_user}" def enqueue_message(self, from_user: str, message_data: Dict[str, Any]) -> bool: """灏嗘秷鎭姞鍏ョ敤鎴烽槦鍒�""" @@ -36,8 +41,8 @@ queue_key = self.get_user_queue_key(from_user) message_json = json.dumps(message_data, ensure_ascii=False) - # 浣跨敤LPUSH灏嗘秷鎭姞鍏ラ槦鍒楀ご閮� - result = self.redis_client.lpush(queue_key, message_json) + # 浣跨敤RPUSH灏嗘秷鎭姞鍏ラ槦鍒楀熬閮紝纭繚FIFO椤哄簭 + result = self.redis_client.rpush(queue_key, message_json) logger.info(f"娑堟伅宸插姞鍏ラ槦鍒�: user={from_user}, queue_length={result}, message={message_json}") return True @@ -107,28 +112,28 @@ logger.error(f"妫�鏌ュ鐞嗙姸鎬佸け璐�: user={from_user}, error={str(e)}") return False - def get_conversation_id(self, from_user: str) -> Optional[str]: + def get_conversation_id(self, from_user: str, group: str = None) -> Optional[str]: """鑾峰彇鐢ㄦ埛鐨勫璇滻D""" try: - conversation_key = self.get_conversation_key(from_user) + conversation_key = self.get_conversation_key(from_user, group) return self.redis_client.get(conversation_key) except Exception as e: - logger.error(f"鑾峰彇瀵硅瘽ID澶辫触: user={from_user}, error={str(e)}") + logger.error(f"鑾峰彇瀵硅瘽ID澶辫触: user={from_user}, group={group}, error={str(e)}") return None def set_conversation_id( - self, from_user: str, conversation_id: str, ttl: int = 86400 + self, from_user: str, conversation_id: str, group: str = None, ttl: int = 86400 ) -> bool: """璁剧疆鐢ㄦ埛鐨勫璇滻D""" try: - conversation_key = self.get_conversation_key(from_user) + conversation_key = self.get_conversation_key(from_user, group) self.redis_client.setex(conversation_key, ttl, conversation_id) logger.info( - f"璁剧疆瀵硅瘽ID: user={from_user}, conversation_id={conversation_id}" + f"璁剧疆瀵硅瘽ID: user={from_user}, group={group}, conversation_id={conversation_id}" ) return True except Exception as e: - logger.error(f"璁剧疆瀵硅瘽ID澶辫触: user={from_user}, error={str(e)}") + logger.error(f"璁剧疆瀵硅瘽ID澶辫触: user={from_user}, group={group}, error={str(e)}") return False def get_queue_length(self, from_user: str) -> int: -- Gitblit v1.9.1