【问题标题】:How can I make a python daemon handle systemd signals?如何让 python 守护进程处理 systemd 信号?
【发布时间】:2017-08-31 19:06:08
【问题描述】:

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

【问题讨论】:

    标签: python signals systemd


    【解决方案1】:

    像这样使用 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 以查看程序是否已发送终止请求。

    注意:您可能需要更改 SIGINT 的值以匹配 systemd 发送的命令。这将取决于您的用例。

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 2012-10-15
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多