调整图片下载逻辑,定时任务5分钟一次进行图片消息下载存档。
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user