fix: 飞书长连接消息处理改为后台线程,防止漏接收
- _handle_message 立即派发到 threading.Thread 处理,不阻塞 SDK 事件循环 - 解决 LLM 响应慢时后续消息排队/丢失的问题 - 精简日志输出,去掉冗余分隔线
This commit is contained in:
Binary file not shown.
@@ -5,6 +5,7 @@
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
import json
|
import json
|
||||||
|
import threading
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import lark_oapi as lark
|
import lark_oapi as lark
|
||||||
@@ -49,15 +50,21 @@ class FeishuLongConnService:
|
|||||||
logger.info("✅ 飞书长连接服务初始化完成")
|
logger.info("✅ 飞书长连接服务初始化完成")
|
||||||
|
|
||||||
def _handle_message(self, data: P2ImMessageReceiveV1) -> None:
|
def _handle_message(self, data: P2ImMessageReceiveV1) -> None:
|
||||||
|
"""收到消息事件,立即派发到后台线程处理,避免阻塞 SDK 事件循环"""
|
||||||
|
threading.Thread(
|
||||||
|
target=self._process_message,
|
||||||
|
args=(data,),
|
||||||
|
daemon=True
|
||||||
|
).start()
|
||||||
|
|
||||||
|
def _process_message(self, data: P2ImMessageReceiveV1) -> None:
|
||||||
"""
|
"""
|
||||||
处理接收到的消息事件
|
在后台线程中处理消息
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data: 飞书消息事件数据
|
data: 飞书消息事件数据
|
||||||
"""
|
"""
|
||||||
logger.info("=" * 80)
|
|
||||||
logger.info("📨 收到飞书消息事件!")
|
logger.info("📨 收到飞书消息事件!")
|
||||||
logger.info("=" * 80)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 提取消息信息
|
# 提取消息信息
|
||||||
@@ -205,9 +212,7 @@ class FeishuLongConnService:
|
|||||||
# 发送回复
|
# 发送回复
|
||||||
self._reply_message(message_id, reply_text)
|
self._reply_message(message_id, reply_text)
|
||||||
|
|
||||||
logger.info("=" * 80)
|
|
||||||
logger.info("✅ 消息处理完成")
|
logger.info("✅ 消息处理完成")
|
||||||
logger.info("=" * 80)
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"❌ 处理消息时发生错误: {e}", exc_info=True)
|
logger.error(f"❌ 处理消息时发生错误: {e}", exc_info=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user