如何优雅地处理SIGTERM信号?
- 论坛
- 如何优雅地处理SIGTERM信号?
23 浏览
如何优雅地处理SIGTERM信号?
假设我们有一个用Python编写的如此微不足道的守护进程:
def mainloop(): while True: # 1. 做一些 # 2. 重要的 # 3. 工作 # 4. 睡眠 mainloop()
我们使用start-stop-daemon
将其守护化,默认情况下在--stop
时发送SIGTERM
(TERM
)信号。
假设当前执行的步骤是#2
。在这个时刻,我们发送了TERM
信号。
发生的情况是执行立即终止。
我发现我可以使用signal.signal(signal.SIGTERM, handler)
来处理信号事件,但问题是它仍然会中断当前的执行并将控制权传递给handler
。
所以,我的问题是 - 是否可能不中断当前的执行,而是在一个独立的线程中处理TERM
信号,这样我就能够设置shutdown_flag = True
,以便mainloop()
有机会优雅地停止?