Я установил python-daemon
, и теперь я пытаюсь правильно обработать сигнал. Мой код:Обработка сигналов в python-daemon
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import signal, time, syslog
import daemon
def runDaemon():
context = daemon.DaemonContext()
context.signal_map = { signal.SIGTERM: programCleanup }
context.open()
with context:
doMainProgram()
def doMainProgram():
while True:
syslog.syslog("pythonDaemon is running")
time.sleep(5)
def programCleanup():
syslog.syslog("pythonDaemon STOP")
if __name__ == "__main__":
runDaemon()
Когда я начинаю код все работает, как ожидалось: Текст pythonDaemon работает получает записывается /var/log/syslog
каждые 5 секунд. Но когда я хочу завершить демона с помощью kill -TERM *PID*
, демон завершается, но текст pythonDaemon STOP отсутствует в syslog.
Что я делаю неправильно?
NB: Я не работаю с from daemon import runner
здесь, потому что это дает мне ошибку (похоже, мне нужна более старая версия lockfile
), и я не буду исправлять это, если только это не позволяет получить правильную обработку сигналов ,