refactor(bot): 统一关闭逻辑到finally块
将优雅关闭(graceful_shutdown)的调用逻辑从`KeyboardInterrupt`异常处理块移动到`finally`块中。 这确保了无论程序是正常退出、收到中断信号,还是发生其他任何异常,都会尝试执行统一的、可靠的清理和关闭流程,从而增强了程序的健壮性。
This commit is contained in:
13
bot.py
13
bot.py
@@ -281,14 +281,8 @@ if __name__ == "__main__":
|
|||||||
loop.run_until_complete(main_tasks)
|
loop.run_until_complete(main_tasks)
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
# loop.run_until_complete(get_global_api().stop())
|
|
||||||
logger.warning("收到中断信号,正在优雅关闭...")
|
logger.warning("收到中断信号,正在优雅关闭...")
|
||||||
if loop and not loop.is_closed():
|
# The actual shutdown logic is now in the finally block.
|
||||||
try:
|
|
||||||
loop.run_until_complete(graceful_shutdown())
|
|
||||||
except Exception as ge: # 捕捉优雅关闭时可能发生的错误
|
|
||||||
logger.error(f"优雅关闭时发生错误: {ge}")
|
|
||||||
# 新增:检测外部请求关闭
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"主程序发生异常: {str(e)} {str(traceback.format_exc())}")
|
logger.error(f"主程序发生异常: {str(e)} {str(traceback.format_exc())}")
|
||||||
@@ -296,6 +290,11 @@ if __name__ == "__main__":
|
|||||||
finally:
|
finally:
|
||||||
# 确保 loop 在任何情况下都尝试关闭(如果存在且未关闭)
|
# 确保 loop 在任何情况下都尝试关闭(如果存在且未关闭)
|
||||||
if "loop" in locals() and loop and not loop.is_closed():
|
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()
|
loop.close()
|
||||||
logger.info("事件循环已关闭")
|
logger.info("事件循环已关闭")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user