您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在关闭信号上在python脚本中运行代码

在关闭信号上在python脚本中运行代码

shutdown发送不处理的SIGTERM信号atexit。上下文管理器,finally块等也不会。

import signal

signal.getsignal(signal.SIGTERM)
Out[64]: 0 #i.e. nothing

与此相反,例如ctrl-C:

signal.getsignal(signal.SIGINT)
Out[65]: <function signal.default_int_handler> #i.e. something

您可以向其注册byebye函数signal以运行而不是不执行任何操作(这将导致解释器最终被shell杀死)

signal.signal(signal.SIGTERM,byebye)

如果执行上述操作,则需要做两件事:

您也可以将signal 进行某种组合atexit

import sys
signal.signal(signal.SIGTERM, lambda num, frame: sys.exit(0))

它将直接插入您当前的代码。这样可以确保清理操作的原子性(即byebye保证是最后的I / O操作),但会有些笨拙。

python 2022/1/1 18:37:25 有439人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶