fix: 飞书长连接消息处理改为后台线程,防止漏接收

- _handle_message 立即派发到 threading.Thread 处理,不阻塞 SDK 事件循环
- 解决 LLM 响应慢时后续消息排队/丢失的问题
- 精简日志输出,去掉冗余分隔线
This commit is contained in:
2026-04-02 15:52:30 +08:00
parent d27b6a9c87
commit eb127ed897
2 changed files with 10 additions and 5 deletions

Binary file not shown.

View File

@@ -5,6 +5,7 @@
"""
import logging
import json
import threading
from typing import Optional
import lark_oapi as lark
@@ -49,15 +50,21 @@ class FeishuLongConnService:
logger.info("✅ 飞书长连接服务初始化完成")
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:
data: 飞书消息事件数据
"""
logger.info("=" * 80)
logger.info("📨 收到飞书消息事件!")
logger.info("=" * 80)
try:
# 提取消息信息
@@ -205,9 +212,7 @@ class FeishuLongConnService:
# 发送回复
self._reply_message(message_id, reply_text)
logger.info("=" * 80)
logger.info("✅ 消息处理完成")
logger.info("=" * 80)
except Exception as e:
logger.error(f"❌ 处理消息时发生错误: {e}", exc_info=True)