signal 的回调函数, 须要两个参数:signum 和 frame
signum 的 type 是一个 int
frame 的 type 是什么呢?
frame 的 type 是 frame class
frame class 在哪里?是内建的
怎么 import 后加正文?无奈导入,然而 python 在 types 中提供了 FrameType 来给咱们做 typing hint
import signal
import os
from loguru import logger
import time
from types import FrameType
def 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 - 2
2022-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 - 没了