mirror of
https://github.com/Nezumi-2711/astrbot_plugin_qq_group_daily_analysis.git
synced 2026-09-22 13:38:43 +00:00
fix: 引入任务生命周期管理,强制退出保护
This commit is contained in:
@@ -142,7 +142,7 @@ class GroupDailyAnalysis(Star):
|
|||||||
self._initialized = False
|
self._initialized = False
|
||||||
self._discovery_run = False # 是否已尝试过运行发现逻辑
|
self._discovery_run = False # 是否已尝试过运行发现逻辑
|
||||||
# 异步注册任务,处理插件重载情况
|
# 异步注册任务,处理插件重载情况
|
||||||
asyncio.create_task(self._run_initialization("Plugin Reload/Init"))
|
self._init_task = asyncio.create_task(self._run_initialization("Plugin Reload/Init"))
|
||||||
|
|
||||||
# orchestrators 缓存已移至 应用层逻辑 (分析服务) 或 暂时移除以简化。
|
# orchestrators 缓存已移至 应用层逻辑 (分析服务) 或 暂时移除以简化。
|
||||||
# 如果需要高性能缓存,后续可由 AnalysisApplicationService 内部维护。
|
# 如果需要高性能缓存,后续可由 AnalysisApplicationService 内部维护。
|
||||||
@@ -167,6 +167,10 @@ class GroupDailyAnalysis(Star):
|
|||||||
# 针对极少数环境,2秒可能不足以让平台管理器就绪,增加到 5秒
|
# 针对极少数环境,2秒可能不足以让平台管理器就绪,增加到 5秒
|
||||||
await asyncio.sleep(5)
|
await asyncio.sleep(5)
|
||||||
|
|
||||||
|
# [加固] 如果在等待期间插件已被卸载(terminate),则直接退出
|
||||||
|
if not self.bot_manager:
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 注册 TraceID 过滤器
|
# 注册 TraceID 过滤器
|
||||||
trace_filter = TraceLogFilter()
|
trace_filter = TraceLogFilter()
|
||||||
@@ -214,6 +218,10 @@ class GroupDailyAnalysis(Star):
|
|||||||
async def terminate(self):
|
async def terminate(self):
|
||||||
"""插件被卸载/停用时调用,清理资源"""
|
"""插件被卸载/停用时调用,清理资源"""
|
||||||
try:
|
try:
|
||||||
|
# 取消正在进行的初始化任务
|
||||||
|
if hasattr(self, "_init_task") and self._init_task and not self._init_task.done():
|
||||||
|
self._init_task.cancel()
|
||||||
|
|
||||||
logger.info("开始清理QQ群日常分析插件资源...")
|
logger.info("开始清理QQ群日常分析插件资源...")
|
||||||
|
|
||||||
# 停止自动调度器
|
# 停止自动调度器
|
||||||
|
|||||||
Reference in New Issue
Block a user