如何让python守护进程处理systemd信号?

时间:2017-08-31 19:06:08

标签: python signals systemd

所以从本质上讲,我有一个作为systemd服务运行的python脚本。当我告诉它停止时,那里有一个比systemd timout更长的睡眠,systemd会在最后一段代码运行之前杀死它。之前的代码是while循环,循环每15秒重复一次。当systemd向它发送信号时,我怎样才能使脚本中断循环?

1 个答案:

答案 0 :(得分:0)

使用signal.signal注册您的处理程序,如下所示:

#!/usr/bin/env python
import signal
import sys

isKilled = False

def signal_handler(signal, frame):
    global isKilled
    isKilled = True

signal.signal(signal.SIGINT, signal_handler)
signal.pause()

然后,您可以测试isKilled以查看程序是否已发送了kill请求。

注意:您可能必须更改SIGINT的值以匹配systemd正在发送的命令。这取决于您的使用案例。