From 991a0aa5f66e35b7a1c9db6d414f247e5d6493f4 Mon Sep 17 00:00:00 2001 From: RockChinQ <1010553892@qq.com> Date: Mon, 12 Feb 2024 13:37:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dnakuru=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=BF=90=E8=A1=8C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/core/controller.py | 2 +- pkg/platform/manager.py | 14 +++++++++++++- pkg/platform/sources/nakuru.py | 16 +++++++++------- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/pkg/core/controller.py b/pkg/core/controller.py index 42ef435c..7173939b 100644 --- a/pkg/core/controller.py +++ b/pkg/core/controller.py @@ -151,7 +151,7 @@ class Controller: except Exception as e: self.ap.logger.error(f"处理请求时出错 query_id={query.query_id}: {e}") self.ap.logger.debug(f"Traceback: {traceback.format_exc()}") - # traceback.print_exc() + traceback.print_exc() finally: self.ap.logger.debug(f"Query {query} processed") diff --git a/pkg/platform/manager.py b/pkg/platform/manager.py index f4f423db..139e6356 100644 --- a/pkg/platform/manager.py +++ b/pkg/platform/manager.py @@ -101,8 +101,12 @@ class PlatformManager: adapter=adapter ) + index = 0 + for adap_cfg in self.ap.platform_cfg.data['platform-adapters']: if adap_cfg['enable']: + self.ap.logger.info(f'初始化平台适配器 {index}: {adap_cfg["adapter"]}') + index += 1 cfg_copy = adap_cfg.copy() del cfg_copy['enable'] adapter_name = cfg_copy['adapter'] @@ -179,7 +183,14 @@ class PlatformManager: try: tasks = [] for adapter in self.adapters: - tasks.append(adapter.run_async()) + async def exception_wrapper(adapter): + try: + await adapter.run_async() + except Exception as e: + self.ap.logger.error('平台适配器运行出错: ' + str(e)) + self.ap.logger.debug(f"Traceback: {traceback.format_exc()}") + + tasks.append(exception_wrapper(adapter)) for task in tasks: asyncio.create_task(task) @@ -187,3 +198,4 @@ class PlatformManager: except Exception as e: self.ap.logger.error('平台适配器运行出错: ' + str(e)) self.ap.logger.debug(f"Traceback: {traceback.format_exc()}") + diff --git a/pkg/platform/sources/nakuru.py b/pkg/platform/sources/nakuru.py index c9ab23e3..0a419a06 100644 --- a/pkg/platform/sources/nakuru.py +++ b/pkg/platform/sources/nakuru.py @@ -1,4 +1,5 @@ -from __future__ import annotations +# 加了之后会导致:https://github.com/Lxns-Network/nakuru-project/issues/25 +# from __future__ import annotations import asyncio import typing @@ -12,7 +13,6 @@ import nakuru.entities.components as nkc from .. import adapter as adapter_model from ...pipeline.longtext.strategies import forward -from ...core import app class NakuruProjectMessageConverter(adapter_model.MessageConverter): @@ -170,11 +170,11 @@ class NakuruProjectAdapter(adapter_model.MessageSourceAdapter): listener_list: list[dict] - ap: app.Application + # ap: app.Application cfg: dict - def __init__(self, cfg: dict, ap: app.Application): + def __init__(self, cfg: dict, ap): """初始化nakuru-project的对象""" cfg['port'] = cfg['ws_port'] del cfg['ws_port'] @@ -261,8 +261,10 @@ class NakuruProjectAdapter(adapter_model.MessageSourceAdapter): ): try: + source_cls = NakuruProjectEventConverter.yiri2target(event_type) + # 包装函数 - async def listener_wrapper(app: nakuru.CQHTTP, source: NakuruProjectAdapter.event_converter.yiri2target(event_type)): + async def listener_wrapper(app: nakuru.CQHTTP, source: source_cls): await callback(self.event_converter.target2yiri(source), self) # 将包装函数和原函数的对应关系存入列表 @@ -275,7 +277,7 @@ class NakuruProjectAdapter(adapter_model.MessageSourceAdapter): ) # 注册监听器 - self.bot.receiver(self.event_converter.yiri2target(event_type).__name__)(listener_wrapper) + self.bot.receiver(source_cls.__name__)(listener_wrapper) except Exception as e: traceback.print_exc() raise e @@ -325,7 +327,7 @@ class NakuruProjectAdapter(adapter_model.MessageSourceAdapter): await self.bot._run() self.ap.logger.info("运行 Nakuru 适配器") while True: - await asyncio.sleep(100) + await asyncio.sleep(1) def kill(self) -> bool: return False \ No newline at end of file