调整图片下载逻辑,定时任务5分钟一次进行图片消息下载存档。
This commit is contained in:
@@ -122,11 +122,11 @@ class MessageStorage:
|
|||||||
logger.debug(f"图片消息已记录,等待定时任务处理: msg_id={msg.msg_id}, roomid={msg.roomid}")
|
logger.debug(f"图片消息已记录,等待定时任务处理: msg_id={msg.msg_id}, roomid={msg.roomid}")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _process_image_from_db(self, db_record: Dict) -> Dict:
|
async def _process_image_from_db(self, db_record: Dict) -> Dict:
|
||||||
"""从数据库记录处理图片(用于定时任务)
|
"""从数据库记录处理图片(用于定时任务,异步版本)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
db_record: 数据库记录,包含 message_id, group_id, message_xml 等
|
db_record: 数据库记录,包含 message_id, group_id, attachment_url 等
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
处理结果字典
|
处理结果字典
|
||||||
@@ -157,13 +157,11 @@ class MessageStorage:
|
|||||||
aeskey = aeskey_match.group(1)
|
aeskey = aeskey_match.group(1)
|
||||||
cdnthumburl = cdn_match.group(1)
|
cdnthumburl = cdn_match.group(1)
|
||||||
|
|
||||||
# ===== 2. 下载图片(复用事件循环)=====
|
# ===== 2. 下载图片(异步方式,直接 await)=====
|
||||||
try:
|
try:
|
||||||
base64_str = self._image_loop.run_until_complete(
|
base64_str = await self.client.download_image(
|
||||||
self.client.download_image(
|
aeskey=aeskey,
|
||||||
aeskey=aeskey,
|
cdnmidimgurl=cdnthumburl
|
||||||
cdnmidimgurl=cdnthumburl
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"图片下载失败 message_id={message_id}: {e}")
|
logger.error(f"图片下载失败 message_id={message_id}: {e}")
|
||||||
@@ -264,7 +262,7 @@ class MessageStorage:
|
|||||||
|
|
||||||
# 串行处理,避免并发更新数据库导致锁竞争
|
# 串行处理,避免并发更新数据库导致锁竞争
|
||||||
for msg_record in pending_messages:
|
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'):
|
if result.get('success'):
|
||||||
success_count += 1
|
success_count += 1
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user