From 1f50ea2df107c6374db53d9486f7b0e99ef53039 Mon Sep 17 00:00:00 2001 From: liuwei Date: Tue, 30 Dec 2025 09:13:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=9B=BE=E7=89=87=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E9=80=BB=E8=BE=91=EF=BC=8C=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A15=E5=88=86=E9=92=9F=E4=B8=80=E6=AC=A1=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=9B=BE=E7=89=87=E6=B6=88=E6=81=AF=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=AD=98=E6=A1=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/wechat/message_to_db.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/utils/wechat/message_to_db.py b/utils/wechat/message_to_db.py index 66643f1..404cbcb 100644 --- a/utils/wechat/message_to_db.py +++ b/utils/wechat/message_to_db.py @@ -122,11 +122,11 @@ class MessageStorage: logger.debug(f"图片消息已记录,等待定时任务处理: msg_id={msg.msg_id}, roomid={msg.roomid}") return True - def _process_image_from_db(self, db_record: Dict) -> Dict: - """从数据库记录处理图片(用于定时任务) + async def _process_image_from_db(self, db_record: Dict) -> Dict: + """从数据库记录处理图片(用于定时任务,异步版本) Args: - db_record: 数据库记录,包含 message_id, group_id, message_xml 等 + db_record: 数据库记录,包含 message_id, group_id, attachment_url 等 Returns: 处理结果字典 @@ -157,13 +157,11 @@ class MessageStorage: aeskey = aeskey_match.group(1) cdnthumburl = cdn_match.group(1) - # ===== 2. 下载图片(复用事件循环)===== + # ===== 2. 下载图片(异步方式,直接 await)===== try: - base64_str = self._image_loop.run_until_complete( - self.client.download_image( - aeskey=aeskey, - cdnmidimgurl=cdnthumburl - ) + base64_str = await self.client.download_image( + aeskey=aeskey, + cdnmidimgurl=cdnthumburl ) except Exception as e: logger.error(f"图片下载失败 message_id={message_id}: {e}") @@ -264,7 +262,7 @@ class MessageStorage: # 串行处理,避免并发更新数据库导致锁竞争 for msg_record in pending_messages: - result = self._process_image_from_db(msg_record) + result = await self._process_image_from_db(msg_record) if result.get('success'): success_count += 1 else: