signal 的回调函数, 须要两个参数:signum 和 frame
signum 的 type 是一个 int
frame 的 type 是什么呢?
frame 的 type 是 frame class
frame class 在哪里?是内建的
怎么 import 后加正文?无奈导入,然而 python 在 types 中提供了 FrameType 来给咱们做 typing hint
import signalimport osfrom loguru import loggerimport timefrom types import FrameTypedef shutdown(signum: int, frame: FrameType): try: logger.debug(signum) logger.debug(type(signum)) logger.debug(frame) logger.debug(type(frame)) logger.debug('没了') assert isinstance(frame, FrameType) finally: exit(0)signal.signal(signal.SIGTERM, shutdown)signal.signal(signal.SIGINT, shutdown)while True: time.sleep(1)
输入如下:
^C2022-09-24 13:20:33.687 | DEBUG | __main__:shutdown:9 - 22022-09-24 13:20:33.687 | DEBUG | __main__:shutdown:10 - <class 'int'>2022-09-24 13:20:33.687 | DEBUG | __main__:shutdown:11 - <frame at 0x7f56f1111a40, file '/home/bot/Desktop/ideaboom/011.py', line 25, code <module>>2022-09-24 13:20:33.687 | DEBUG | __main__:shutdown:12 - <class 'frame'>2022-09-24 13:20:33.688 | DEBUG | __main__:shutdown:13 - 没了