fix: 修复代码质量和隐形问题 - 移除未使用导入、修复asyncio任务引用、修复类型注解
Co-authored-by: Windpicker-owo <221029311+Windpicker-owo@users.noreply.github.com>
This commit is contained in:
@@ -10,13 +10,10 @@ from __future__ import annotations
|
|||||||
import asyncio
|
import asyncio
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
from pathlib import Path
|
from typing import Any
|
||||||
from typing import Any, Dict, Optional
|
|
||||||
|
|
||||||
import orjson
|
import orjson
|
||||||
import websockets
|
import websockets
|
||||||
|
|
||||||
|
|
||||||
from mofox_wire import (
|
from mofox_wire import (
|
||||||
AdapterBase,
|
AdapterBase,
|
||||||
InProcessCoreSink,
|
InProcessCoreSink,
|
||||||
@@ -25,7 +22,6 @@ from mofox_wire import (
|
|||||||
WebSocketAdapterOptions,
|
WebSocketAdapterOptions,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# 1. 模拟一个提供 WebSocket 接口的平台
|
# 1. 模拟一个提供 WebSocket 接口的平台
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -93,7 +89,7 @@ class DemoWsAdapter(AdapterBase): # 继承AdapterBase
|
|||||||
# 实现 from_platform_message 方法,将平台消息转换为 MessageEnvelope
|
# 实现 from_platform_message 方法,将平台消息转换为 MessageEnvelope
|
||||||
# 该方法必须被实现以便 AdapterBase 正确处理消息转换
|
# 该方法必须被实现以便 AdapterBase 正确处理消息转换
|
||||||
# 该方法会在adapter接收到平台消息后被调用
|
# 该方法会在adapter接收到平台消息后被调用
|
||||||
def from_platform_message(self, raw: Dict[str, Any]) -> MessageEnvelope:
|
def from_platform_message(self, raw: dict[str, Any]) -> MessageEnvelope:
|
||||||
return {
|
return {
|
||||||
"id": raw["message_id"],
|
"id": raw["message_id"],
|
||||||
"direction": "incoming",
|
"direction": "incoming",
|
||||||
@@ -151,7 +147,7 @@ async def handle_incoming(env: MessageEnvelope) -> MessageEnvelope:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
adapter: Optional[DemoWsAdapter] = None
|
adapter: DemoWsAdapter | None = None
|
||||||
|
|
||||||
|
|
||||||
async def core_entry(message: MessageEnvelope) -> None:
|
async def core_entry(message: MessageEnvelope) -> None:
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ sys.path.insert(0, str(Path(__file__).parent.parent))
|
|||||||
|
|
||||||
|
|
||||||
async def generate_missing_embeddings(
|
async def generate_missing_embeddings(
|
||||||
target_node_types: list[str] = None,
|
target_node_types: list[str] | None = None,
|
||||||
batch_size: int = 50,
|
batch_size: int = 50,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -307,8 +307,8 @@ async def extract_information(paragraphs_dict, model_set):
|
|||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
filename = now.strftime("%Y-%m-%d-%H-%M-%S-openie.json")
|
filename = now.strftime("%Y-%m-%d-%H-%M-%S-openie.json")
|
||||||
output_path = os.path.join(OPENIE_OUTPUT_DIR, filename)
|
output_path = os.path.join(OPENIE_OUTPUT_DIR, filename)
|
||||||
with open(output_path, "wb") as f:
|
async with aiofiles.open(output_path, "wb") as f:
|
||||||
f.write(orjson.dumps(openie_obj._to_dict()))
|
await f.write(orjson.dumps(openie_obj._to_dict()))
|
||||||
logger.info(f"信息提取结果已保存到: {output_path}")
|
logger.info(f"信息提取结果已保存到: {output_path}")
|
||||||
logger.info(f"成功提取 {len(open_ie_docs)} 个段落的信息")
|
logger.info(f"成功提取 {len(open_ie_docs)} 个段落的信息")
|
||||||
|
|
||||||
|
|||||||
@@ -27,21 +27,17 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import time
|
|
||||||
import traceback
|
import traceback
|
||||||
from functools import partial
|
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
from mofox_wire import MessageEnvelope, MessageRuntime
|
from mofox_wire import MessageEnvelope, MessageRuntime
|
||||||
|
|
||||||
from src.chat.message_manager import message_manager
|
from src.chat.message_manager import message_manager
|
||||||
from src.chat.message_receive.storage import MessageStorage
|
from src.chat.message_receive.storage import MessageStorage
|
||||||
from src.chat.utils.prompt import global_prompt_manager
|
|
||||||
from src.chat.utils.utils import is_mentioned_bot_in_message
|
from src.chat.utils.utils import is_mentioned_bot_in_message
|
||||||
from src.common.data_models.database_data_model import DatabaseMessages, DatabaseUserInfo, DatabaseGroupInfo
|
from src.common.data_models.database_data_model import DatabaseGroupInfo, DatabaseMessages, DatabaseUserInfo
|
||||||
from src.common.logger import get_logger
|
from src.common.logger import get_logger
|
||||||
from src.config.config import global_config
|
from src.config.config import global_config
|
||||||
from src.mood.mood_manager import mood_manager
|
from src.mood.mood_manager import mood_manager
|
||||||
@@ -49,8 +45,8 @@ from src.plugin_system.base import BaseCommand, EventType
|
|||||||
from src.plugin_system.core import component_registry, event_manager, global_announcement_manager
|
from src.plugin_system.core import component_registry, event_manager, global_announcement_manager
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from src.common.core_sink_manager import CoreSinkManager
|
|
||||||
from src.chat.message_receive.chat_stream import ChatStream
|
from src.chat.message_receive.chat_stream import ChatStream
|
||||||
|
from src.common.core_sink_manager import CoreSinkManager
|
||||||
|
|
||||||
logger = get_logger("message_handler")
|
logger = get_logger("message_handler")
|
||||||
|
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ CoreSink 统一管理器
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import contextlib
|
|
||||||
import multiprocessing as mp
|
import multiprocessing as mp
|
||||||
from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Optional
|
from collections.abc import Awaitable, Callable
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from mofox_wire import (
|
from mofox_wire import (
|
||||||
InProcessCoreSink,
|
InProcessCoreSink,
|
||||||
@@ -33,9 +33,6 @@ from mofox_wire import (
|
|||||||
|
|
||||||
from src.common.logger import get_logger
|
from src.common.logger import get_logger
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from chat.message_receive.message_handler import MessageHandler
|
|
||||||
|
|
||||||
logger = get_logger("core_sink_manager")
|
logger = get_logger("core_sink_manager")
|
||||||
|
|
||||||
|
|
||||||
@@ -76,7 +73,7 @@ class CoreSinkManager:
|
|||||||
|
|
||||||
# 子进程通信管理
|
# 子进程通信管理
|
||||||
# key: adapter_name, value: (ProcessCoreSinkServer, incoming_queue, outgoing_queue)
|
# key: adapter_name, value: (ProcessCoreSinkServer, incoming_queue, outgoing_queue)
|
||||||
self._process_sinks: Dict[str, tuple[ProcessCoreSinkServer, mp.Queue, mp.Queue]] = {}
|
self._process_sinks: dict[str, tuple[ProcessCoreSinkServer, mp.Queue, mp.Queue]] = {}
|
||||||
|
|
||||||
# multiprocessing context
|
# multiprocessing context
|
||||||
self._mp_ctx = mp.get_context("spawn")
|
self._mp_ctx = mp.get_context("spawn")
|
||||||
@@ -85,6 +82,9 @@ class CoreSinkManager:
|
|||||||
self._running = False
|
self._running = False
|
||||||
self._initialized = False
|
self._initialized = False
|
||||||
|
|
||||||
|
# 后台任务集合(防止任务被垃圾回收)
|
||||||
|
self._background_tasks: set[asyncio.Task] = set()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def runtime(self) -> MessageRuntime:
|
def runtime(self) -> MessageRuntime:
|
||||||
"""
|
"""
|
||||||
@@ -196,7 +196,9 @@ class CoreSinkManager:
|
|||||||
logger.warning(f"适配器 {adapter_name} 的队列已存在,将被覆盖")
|
logger.warning(f"适配器 {adapter_name} 的队列已存在,将被覆盖")
|
||||||
# 先关闭旧的
|
# 先关闭旧的
|
||||||
old_server, _, _ = self._process_sinks[adapter_name]
|
old_server, _, _ = self._process_sinks[adapter_name]
|
||||||
asyncio.create_task(old_server.close())
|
task = asyncio.create_task(old_server.close())
|
||||||
|
self._background_tasks.add(task)
|
||||||
|
task.add_done_callback(self._background_tasks.discard)
|
||||||
|
|
||||||
# 创建通信队列
|
# 创建通信队列
|
||||||
incoming_queue = self._mp_ctx.Queue() # 子进程 → 核心
|
incoming_queue = self._mp_ctx.Queue() # 子进程 → 核心
|
||||||
@@ -232,7 +234,9 @@ class CoreSinkManager:
|
|||||||
return
|
return
|
||||||
|
|
||||||
server, _, _ = self._process_sinks.pop(adapter_name)
|
server, _, _ = self._process_sinks.pop(adapter_name)
|
||||||
asyncio.create_task(server.close())
|
task = asyncio.create_task(server.close())
|
||||||
|
self._background_tasks.add(task)
|
||||||
|
task.add_done_callback(self._background_tasks.discard)
|
||||||
logger.info(f"已移除适配器 {adapter_name} 的 ProcessCoreSink 通信队列")
|
logger.info(f"已移除适配器 {adapter_name} 的 ProcessCoreSink 通信队列")
|
||||||
|
|
||||||
async def send_outgoing(
|
async def send_outgoing(
|
||||||
@@ -390,12 +394,12 @@ async def push_outgoing(envelope: MessageEnvelope) -> None:
|
|||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"CoreSinkManager",
|
"CoreSinkManager",
|
||||||
|
# 向后兼容
|
||||||
|
"get_core_sink",
|
||||||
"get_core_sink_manager",
|
"get_core_sink_manager",
|
||||||
"get_message_runtime",
|
"get_message_runtime",
|
||||||
"initialize_core_sink_manager",
|
"initialize_core_sink_manager",
|
||||||
"shutdown_core_sink_manager",
|
|
||||||
# 向后兼容
|
|
||||||
"get_core_sink",
|
|
||||||
"set_core_sink",
|
|
||||||
"push_outgoing",
|
"push_outgoing",
|
||||||
|
"set_core_sink",
|
||||||
|
"shutdown_core_sink_manager",
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user