feat:五颜六色
This commit is contained in:
@@ -5,7 +5,58 @@ import os
|
|||||||
from types import ModuleType
|
from types import ModuleType
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
# from ..plugins.chat.config import global_config
|
'''
|
||||||
|
日志颜色说明:
|
||||||
|
|
||||||
|
1. 主程序(Main)
|
||||||
|
浅黄色标题 | 浅黄色消息
|
||||||
|
|
||||||
|
2. 海马体(Memory)
|
||||||
|
浅黄色标题 | 浅黄色消息
|
||||||
|
|
||||||
|
3. PFC(前额叶皮质)
|
||||||
|
浅绿色标题 | 浅绿色消息
|
||||||
|
|
||||||
|
4. 心情(Mood)
|
||||||
|
品红色标题 | 品红色消息
|
||||||
|
|
||||||
|
5. 工具使用(Tool)
|
||||||
|
品红色标题 | 品红色消息
|
||||||
|
|
||||||
|
6. 关系(Relation)
|
||||||
|
浅品红色标题 | 浅品红色消息
|
||||||
|
|
||||||
|
7. 配置(Config)
|
||||||
|
浅青色标题 | 浅青色消息
|
||||||
|
|
||||||
|
8. 麦麦大脑袋
|
||||||
|
浅绿色标题 | 浅绿色消息
|
||||||
|
|
||||||
|
9. 在干嘛
|
||||||
|
青色标题 | 青色消息
|
||||||
|
|
||||||
|
10. 麦麦组织语言
|
||||||
|
浅绿色标题 | 浅绿色消息
|
||||||
|
|
||||||
|
11. 见闻(Chat)
|
||||||
|
浅蓝色标题 | 绿色消息
|
||||||
|
|
||||||
|
12. 表情包(Emoji)
|
||||||
|
橙色标题 | 橙色消息 fg #FFD700
|
||||||
|
|
||||||
|
13. 子心流
|
||||||
|
|
||||||
|
13. 其他模块
|
||||||
|
模块名标题 | 对应颜色消息
|
||||||
|
|
||||||
|
|
||||||
|
注意:
|
||||||
|
1. 级别颜色遵循loguru默认配置
|
||||||
|
2. 可通过环境变量修改日志级别
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 加载 .env 文件
|
# 加载 .env 文件
|
||||||
env_path = Path(__file__).resolve().parent.parent.parent / ".env"
|
env_path = Path(__file__).resolve().parent.parent.parent / ".env"
|
||||||
@@ -88,25 +139,6 @@ MAIN_STYLE_CONFIG = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
# 海马体日志样式配置
|
|
||||||
MEMORY_STYLE_CONFIG = {
|
|
||||||
"advanced": {
|
|
||||||
"console_format": (
|
|
||||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
||||||
"<level>{level: <8}</level> | "
|
|
||||||
"<light-yellow>海马体</light-yellow> | "
|
|
||||||
"<level>{message}</level>"
|
|
||||||
),
|
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}",
|
|
||||||
},
|
|
||||||
"simple": {
|
|
||||||
"console_format": (
|
|
||||||
"<level>{time:MM-DD HH:mm}</level> | <light-yellow>海马体</light-yellow> | <light-yellow>{message}</light-yellow>"
|
|
||||||
),
|
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
# pfc配置
|
# pfc配置
|
||||||
PFC_STYLE_CONFIG = {
|
PFC_STYLE_CONFIG = {
|
||||||
"advanced": {
|
"advanced": {
|
||||||
@@ -314,6 +346,24 @@ REMOTE_STYLE_CONFIG = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SUB_HEARTFLOW_STYLE_CONFIG = {
|
SUB_HEARTFLOW_STYLE_CONFIG = {
|
||||||
|
"advanced": {
|
||||||
|
"console_format": (
|
||||||
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||||
|
"<level>{level: <8}</level> | "
|
||||||
|
"<light-blue>麦麦水群</light-blue> | "
|
||||||
|
"<level>{message}</level>"
|
||||||
|
),
|
||||||
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}",
|
||||||
|
},
|
||||||
|
"simple": {
|
||||||
|
"console_format": (
|
||||||
|
"<level>{time:MM-DD HH:mm}</level> | <fg #3399FF>麦麦水群 | {message}</fg #3399FF>"
|
||||||
|
), # noqa: E501
|
||||||
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群 | {message}",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
SUB_HEARTFLOW_MIND_STYLE_CONFIG = {
|
||||||
"advanced": {
|
"advanced": {
|
||||||
"console_format": (
|
"console_format": (
|
||||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||||
@@ -325,12 +375,30 @@ SUB_HEARTFLOW_STYLE_CONFIG = {
|
|||||||
},
|
},
|
||||||
"simple": {
|
"simple": {
|
||||||
"console_format": (
|
"console_format": (
|
||||||
"<level>{time:MM-DD HH:mm}</level> | <light-blue>麦麦小脑袋</light-blue> | <light-blue>{message}</light-blue>"
|
"<level>{time:MM-DD HH:mm}</level> | <fg #66CCFF>麦麦小脑袋 | {message}</fg #66CCFF>"
|
||||||
), # noqa: E501
|
), # noqa: E501
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}",
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SUBHEARTFLOW_MANAGER_STYLE_CONFIG = {
|
||||||
|
"advanced": {
|
||||||
|
"console_format": (
|
||||||
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||||
|
"<level>{level: <8}</level> | "
|
||||||
|
"<light-blue>麦麦水群[管理]</light-blue> | "
|
||||||
|
"<level>{message}</level>"
|
||||||
|
),
|
||||||
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群[管理] | {message}",
|
||||||
|
},
|
||||||
|
"simple": {
|
||||||
|
"console_format": (
|
||||||
|
"<level>{time:MM-DD HH:mm}</level> | <fg #3399FF>麦麦水群[管理] | {message}</fg #3399FF>"
|
||||||
|
), # noqa: E501
|
||||||
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群[管理] | {message}",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
BASE_TOOL_STYLE_CONFIG = {
|
BASE_TOOL_STYLE_CONFIG = {
|
||||||
"advanced": {
|
"advanced": {
|
||||||
"console_format": (
|
"console_format": (
|
||||||
@@ -403,24 +471,6 @@ BACKGROUND_TASKS_STYLE_CONFIG = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
SUBHEARTFLOW_MANAGER_STYLE_CONFIG = {
|
|
||||||
"advanced": {
|
|
||||||
"console_format": (
|
|
||||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
||||||
"<level>{level: <8}</level> | "
|
|
||||||
"<light-blue>小脑袋管理</light-blue> | "
|
|
||||||
"<level>{message}</level>"
|
|
||||||
),
|
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 小脑袋管理 | {message}",
|
|
||||||
},
|
|
||||||
"simple": {
|
|
||||||
"console_format": (
|
|
||||||
"<level>{time:MM-DD HH:mm}</level> | <light-blue>小脑袋管理</light-blue> | <light-blue>{message}</light-blue>"
|
|
||||||
), # noqa: E501
|
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 小脑袋管理 | {message}",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
WILLING_STYLE_CONFIG = {
|
WILLING_STYLE_CONFIG = {
|
||||||
"advanced": {
|
"advanced": {
|
||||||
"console_format": (
|
"console_format": (
|
||||||
@@ -453,19 +503,20 @@ PFC_ACTION_PLANNER_STYLE_CONFIG = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# EMOJI,橙色,全着色
|
||||||
EMOJI_STYLE_CONFIG = {
|
EMOJI_STYLE_CONFIG = {
|
||||||
"advanced": {
|
"advanced": {
|
||||||
"console_format": (
|
"console_format": (
|
||||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||||
"<level>{level: <8}</level> | "
|
"<level>{level: <8}</level> | "
|
||||||
"<light-blue>表情</light-blue> | "
|
"<fg #FFD700>表情包</fg #FFD700> | "
|
||||||
"<level>{message}</level>"
|
"<level>{message}</level>"
|
||||||
),
|
),
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情 | {message}",
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情包 | {message}",
|
||||||
},
|
},
|
||||||
"simple": {
|
"simple": {
|
||||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <yellow>表情 | {message} </yellow>", # noqa: E501
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <fg #FFD700>表情包 | {message} </fg #FFD700>", # noqa: E501
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情 | {message}",
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情包 | {message}",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -485,6 +536,27 @@ MAI_STATE_CONFIG = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# 海马体日志样式配置
|
||||||
|
MEMORY_STYLE_CONFIG = {
|
||||||
|
"advanced": {
|
||||||
|
"console_format": (
|
||||||
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||||
|
"<level>{level: <8}</level> | "
|
||||||
|
"<light-yellow>海马体</light-yellow> | "
|
||||||
|
"<level>{message}</level>"
|
||||||
|
),
|
||||||
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}",
|
||||||
|
},
|
||||||
|
"simple": {
|
||||||
|
"console_format": (
|
||||||
|
"<level>{time:MM-DD HH:mm}</level> | <fg #7CFFE6>海马体</fg #7CFFE6> | <fg #7CFFE6>{message}</fg #7CFFE6>"
|
||||||
|
),
|
||||||
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# LPMM配置
|
# LPMM配置
|
||||||
LPMM_STYLE_CONFIG = {
|
LPMM_STYLE_CONFIG = {
|
||||||
"advanced": {
|
"advanced": {
|
||||||
@@ -498,7 +570,7 @@ LPMM_STYLE_CONFIG = {
|
|||||||
},
|
},
|
||||||
"simple": {
|
"simple": {
|
||||||
"console_format": (
|
"console_format": (
|
||||||
"<level>{time:MM-DD HH:mm}</level> | <light-green>LPMM</light-green> | <light-green>{message}</light-green>"
|
"<level>{time:MM-DD HH:mm}</level> | <fg #37FFB4>LPMM</fg #37FFB4> | <fg #37FFB4>{message}</fg #37FFB4>"
|
||||||
),
|
),
|
||||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM | {message}",
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM | {message}",
|
||||||
},
|
},
|
||||||
@@ -575,6 +647,9 @@ HEARTFLOW_STYLE_CONFIG = HEARTFLOW_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else
|
|||||||
SUB_HEARTFLOW_STYLE_CONFIG = (
|
SUB_HEARTFLOW_STYLE_CONFIG = (
|
||||||
SUB_HEARTFLOW_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUB_HEARTFLOW_STYLE_CONFIG["advanced"]
|
SUB_HEARTFLOW_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUB_HEARTFLOW_STYLE_CONFIG["advanced"]
|
||||||
) # noqa: E501
|
) # noqa: E501
|
||||||
|
SUB_HEARTFLOW_MIND_STYLE_CONFIG = (
|
||||||
|
SUB_HEARTFLOW_MIND_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUB_HEARTFLOW_MIND_STYLE_CONFIG["advanced"]
|
||||||
|
)
|
||||||
WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_STYLE_CONFIG["advanced"]
|
WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_STYLE_CONFIG["advanced"]
|
||||||
MAI_STATE_CONFIG = MAI_STATE_CONFIG["simple"] if SIMPLE_OUTPUT else MAI_STATE_CONFIG["advanced"]
|
MAI_STATE_CONFIG = MAI_STATE_CONFIG["simple"] if SIMPLE_OUTPUT else MAI_STATE_CONFIG["advanced"]
|
||||||
CONFIG_STYLE_CONFIG = CONFIG_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CONFIG_STYLE_CONFIG["advanced"]
|
CONFIG_STYLE_CONFIG = CONFIG_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CONFIG_STYLE_CONFIG["advanced"]
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ logger = get_module_logger("config", config=config_config)
|
|||||||
# 考虑到,实际上配置文件中的mai_version是不会自动更新的,所以采用硬编码
|
# 考虑到,实际上配置文件中的mai_version是不会自动更新的,所以采用硬编码
|
||||||
is_test = True
|
is_test = True
|
||||||
mai_version_main = "0.6.3"
|
mai_version_main = "0.6.3"
|
||||||
mai_version_fix = "snapshot-4"
|
mai_version_fix = "snapshot-5"
|
||||||
|
|
||||||
if mai_version_fix:
|
if mai_version_fix:
|
||||||
if is_test:
|
if is_test:
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class InterestLogger:
|
|||||||
results = {}
|
results = {}
|
||||||
|
|
||||||
if not all_flows:
|
if not all_flows:
|
||||||
logger.debug("未找到任何子心流状态")
|
# logger.debug("未找到任何子心流状态")
|
||||||
return results
|
return results
|
||||||
|
|
||||||
for subheartflow in all_flows:
|
for subheartflow in all_flows:
|
||||||
@@ -109,7 +109,7 @@ class InterestLogger:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if not all_subflow_states:
|
if not all_subflow_states:
|
||||||
logger.debug("没有获取到任何子心流状态,仅记录主心流状态")
|
# logger.debug("没有获取到任何子心流状态,仅记录主心流状态")
|
||||||
with open(self._history_log_file_path, "a", encoding="utf-8") as f:
|
with open(self._history_log_file_path, "a", encoding="utf-8") as f:
|
||||||
f.write(json.dumps(log_entry_base, ensure_ascii=False) + "\n")
|
f.write(json.dumps(log_entry_base, ensure_ascii=False) + "\n")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import traceback
|
import traceback
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from src.common.logger import get_module_logger
|
from src.common.logger import get_module_logger, LogConfig, SUB_HEARTFLOW_MIND_STYLE_CONFIG
|
||||||
from src.plugins.models.utils_model import LLMRequest
|
from src.plugins.models.utils_model import LLMRequest
|
||||||
from src.individuality.individuality import Individuality
|
from src.individuality.individuality import Individuality
|
||||||
from src.plugins.utils.prompt_builder import global_prompt_manager
|
from src.plugins.utils.prompt_builder import global_prompt_manager
|
||||||
@@ -12,7 +12,12 @@ if TYPE_CHECKING:
|
|||||||
from src.heart_flow.subheartflow_manager import SubHeartflowManager
|
from src.heart_flow.subheartflow_manager import SubHeartflowManager
|
||||||
from src.heart_flow.mai_state_manager import MaiStateInfo
|
from src.heart_flow.mai_state_manager import MaiStateInfo
|
||||||
|
|
||||||
logger = get_module_logger("mind")
|
mind_log_config = LogConfig(
|
||||||
|
console_format=SUB_HEARTFLOW_MIND_STYLE_CONFIG["console_format"],
|
||||||
|
file_format=SUB_HEARTFLOW_MIND_STYLE_CONFIG["file_format"],
|
||||||
|
)
|
||||||
|
|
||||||
|
logger = get_module_logger("mind", config=mind_log_config)
|
||||||
|
|
||||||
|
|
||||||
class Mind:
|
class Mind:
|
||||||
|
|||||||
@@ -26,13 +26,6 @@ subheartflow_config = LogConfig(
|
|||||||
)
|
)
|
||||||
logger = get_module_logger("subheartflow", config=subheartflow_config)
|
logger = get_module_logger("subheartflow", config=subheartflow_config)
|
||||||
|
|
||||||
interest_log_config = LogConfig(
|
|
||||||
console_format=SUB_HEARTFLOW_STYLE_CONFIG["console_format"],
|
|
||||||
file_format=SUB_HEARTFLOW_STYLE_CONFIG["file_format"],
|
|
||||||
)
|
|
||||||
interest_logger = get_module_logger("InterestChatting", config=interest_log_config)
|
|
||||||
|
|
||||||
|
|
||||||
base_reply_probability = 0.05
|
base_reply_probability = 0.05
|
||||||
probability_increase_rate_per_second = 0.08
|
probability_increase_rate_per_second = 0.08
|
||||||
max_reply_probability = 1
|
max_reply_probability = 1
|
||||||
@@ -97,7 +90,7 @@ class InterestChatting:
|
|||||||
|
|
||||||
# 异常情况处理
|
# 异常情况处理
|
||||||
if self.decay_rate_per_second <= 0:
|
if self.decay_rate_per_second <= 0:
|
||||||
interest_logger.warning(f"衰减率({self.decay_rate_per_second})无效,重置兴趣值为0")
|
logger.warning(f"衰减率({self.decay_rate_per_second})无效,重置兴趣值为0")
|
||||||
self.interest_level = 0.0
|
self.interest_level = 0.0
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -106,7 +99,7 @@ class InterestChatting:
|
|||||||
decay_factor = math.pow(self.decay_rate_per_second, self.update_interval)
|
decay_factor = math.pow(self.decay_rate_per_second, self.update_interval)
|
||||||
self.interest_level *= decay_factor
|
self.interest_level *= decay_factor
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
interest_logger.error(
|
logger.error(
|
||||||
f"衰减计算错误: {e} 参数: 衰减率={self.decay_rate_per_second} 时间差={self.update_interval} 当前兴趣={self.interest_level}"
|
f"衰减计算错误: {e} 参数: 衰减率={self.decay_rate_per_second} 时间差={self.update_interval} 当前兴趣={self.interest_level}"
|
||||||
)
|
)
|
||||||
self.interest_level = 0.0
|
self.interest_level = 0.0
|
||||||
@@ -161,46 +154,46 @@ class InterestChatting:
|
|||||||
# 正常超时,继续循环
|
# 正常超时,继续循环
|
||||||
continue
|
continue
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
interest_logger.info("InterestChatting 更新循环被取消。")
|
logger.info("InterestChatting 更新循环被取消。")
|
||||||
break
|
break
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
interest_logger.error(f"InterestChatting 更新循环出错: {e}")
|
logger.error(f"InterestChatting 更新循环出错: {e}")
|
||||||
interest_logger.error(traceback.format_exc())
|
logger.error(traceback.format_exc())
|
||||||
# 防止错误导致CPU飙升,稍作等待
|
# 防止错误导致CPU飙升,稍作等待
|
||||||
await asyncio.sleep(5)
|
await asyncio.sleep(5)
|
||||||
interest_logger.info("InterestChatting 更新循环已停止。")
|
logger.info("InterestChatting 更新循环已停止。")
|
||||||
|
|
||||||
def start_updates(self, update_interval: float = 1.0):
|
def start_updates(self, update_interval: float = 1.0):
|
||||||
"""启动后台更新任务"""
|
"""启动后台更新任务"""
|
||||||
if self.update_task is None or self.update_task.done():
|
if self.update_task is None or self.update_task.done():
|
||||||
self._stop_event.clear()
|
self._stop_event.clear()
|
||||||
self.update_task = asyncio.create_task(self._run_update_loop(update_interval))
|
self.update_task = asyncio.create_task(self._run_update_loop(update_interval))
|
||||||
interest_logger.debug("后台兴趣更新任务已创建并启动。")
|
logger.debug("后台兴趣更新任务已创建并启动。")
|
||||||
else:
|
else:
|
||||||
interest_logger.debug("后台兴趣更新任务已在运行中。")
|
logger.debug("后台兴趣更新任务已在运行中。")
|
||||||
|
|
||||||
async def stop_updates(self):
|
async def stop_updates(self):
|
||||||
"""停止后台更新任务"""
|
"""停止后台更新任务"""
|
||||||
if self.update_task and not self.update_task.done():
|
if self.update_task and not self.update_task.done():
|
||||||
interest_logger.info("正在停止 InterestChatting 后台更新任务...")
|
logger.info("正在停止 InterestChatting 后台更新任务...")
|
||||||
self._stop_event.set() # 发送停止信号
|
self._stop_event.set() # 发送停止信号
|
||||||
try:
|
try:
|
||||||
# 等待任务结束,设置超时
|
# 等待任务结束,设置超时
|
||||||
await asyncio.wait_for(self.update_task, timeout=5.0)
|
await asyncio.wait_for(self.update_task, timeout=5.0)
|
||||||
interest_logger.info("InterestChatting 后台更新任务已成功停止。")
|
logger.info("InterestChatting 后台更新任务已成功停止。")
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
interest_logger.warning("停止 InterestChatting 后台任务超时,尝试取消...")
|
logger.warning("停止 InterestChatting 后台任务超时,尝试取消...")
|
||||||
self.update_task.cancel()
|
self.update_task.cancel()
|
||||||
try:
|
try:
|
||||||
await self.update_task # 等待取消完成
|
await self.update_task # 等待取消完成
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
interest_logger.info("InterestChatting 后台更新任务已被取消。")
|
logger.info("InterestChatting 后台更新任务已被取消。")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
interest_logger.error(f"停止 InterestChatting 后台任务时发生异常: {e}")
|
logger.error(f"停止 InterestChatting 后台任务时发生异常: {e}")
|
||||||
finally:
|
finally:
|
||||||
self.update_task = None
|
self.update_task = None
|
||||||
else:
|
else:
|
||||||
interest_logger.debug("InterestChatting 后台更新任务未运行或已完成。")
|
logger.debug("InterestChatting 后台更新任务未运行或已完成。")
|
||||||
|
|
||||||
# --- 结束 新增方法 ---
|
# --- 结束 新增方法 ---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user