我有一段 Python 代码如下:
import sys
import signal
import atexit
def release():
print "Release resources..."
def sigHandler(signo, frame):
release()
sys.exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigHandler)
atexit.register(release)
while True:
pass
实际代码远比这段代码复杂,但结构是相同的:即 main 函数保持一个无限循环。
我需要一个信号回调来释放占用的资源,比如数据库句柄。然后我添加一个SIGTERM
处理程序,以防服务器被杀死,它只是调用释放函数然后退出进程。其atexit
目的是成功完成处理过程。
现在我有一个问题,我只想release
在进程被终止时调用一次。我的代码有什么改进吗?