From 1b15e23448a44cb772d2dd3017786f2b14755522 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Wed, 20 Aug 2025 10:33:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor(bot):=20=E7=BB=9F=E4=B8=80=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E9=80=BB=E8=BE=91=E5=88=B0finally=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将优雅关闭(graceful_shutdown)的调用逻辑从`KeyboardInterrupt`异常处理块移动到`finally`块中。 这确保了无论程序是正常退出、收到中断信号,还是发生其他任何异常,都会尝试执行统一的、可靠的清理和关闭流程,从而增强了程序的健壮性。 --- bot.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/bot.py b/bot.py index d4a507279..0046bc83c 100644 --- a/bot.py +++ b/bot.py @@ -281,14 +281,8 @@ if __name__ == "__main__": loop.run_until_complete(main_tasks) except KeyboardInterrupt: - # loop.run_until_complete(get_global_api().stop()) logger.warning("收到中断信号,正在优雅关闭...") - if loop and not loop.is_closed(): - try: - loop.run_until_complete(graceful_shutdown()) - except Exception as ge: # 捕捉优雅关闭时可能发生的错误 - logger.error(f"优雅关闭时发生错误: {ge}") - # 新增:检测外部请求关闭 + # The actual shutdown logic is now in the finally block. except Exception as e: logger.error(f"主程序发生异常: {str(e)} {str(traceback.format_exc())}") @@ -296,6 +290,11 @@ if __name__ == "__main__": finally: # 确保 loop 在任何情况下都尝试关闭(如果存在且未关闭) if "loop" in locals() and loop and not loop.is_closed(): + logger.info("开始执行最终关闭流程...") + try: + loop.run_until_complete(graceful_shutdown()) + except Exception as ge: + logger.error(f"优雅关闭时发生错误: {ge}") loop.close() logger.info("事件循环已关闭")