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()
