优雅的退出asyncio事件循环
Posted c-x-a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优雅的退出asyncio事件循环相关的知识,希望对你有一定的参考价值。
import asyncio import functools import os import signal """ 信号值 符号 行为 2 SIGINT 进程终端,CTRL+C 9 SIGKILL 强制终端 15 SIGTEM 请求中断 20 SIGTOP 停止(挂起)进程 CRTL+D """ def exit(sign_name): print(f"获取信号{sign_name}: exit") loop.stop() loop = asyncio.get_event_loop() for sign_name in (‘SIGINT‘, ‘SIGTERM‘): loop.add_signal_handler(getattr(signal, sign_name), functools.partial(exit, sign_name)) print(" Ctrl+C 停止运行.") print(f"pid {os.getpid()}: 发送 SIGINT 和 SIGTERM 信号退出循环") try: loop.run_forever() finally: loop.close()
以上是关于优雅的退出asyncio事件循环的主要内容,如果未能解决你的问题,请参考以下文章
Python asyncio - 使用Task的循环退出已被销毁,但它正在等待处理
Python asyncio/discord.py - 循环退出,任务被破坏,但它处于待处理状态