7
如何优雅地处理SIGTERM信号?
假设我们有一个用python编写的琐碎守护程序: def mainloop(): while True: # 1. do # 2. some # 3. important # 4. job # 5. sleep mainloop() 我们将它守护起来start-stop-daemon,默认情况下使用它发送SIGTERM(TERM)信号--stop。 假设当前执行的步骤是#2。此时此刻,我们正在发送TERM信号。 发生的事情是执行立即终止。 我发现我可以使用处理信号事件,signal.signal(signal.SIGTERM, handler)但事实是它仍然会中断当前执行并将控制权传递给handler。 所以,我的问题是-它可以不中断当前执行,但处理TERM在一个独立的线程信号,使我能够设置(?) shutdown_flag = True,这样mainloop()有机会停止正常?