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: