8
我安装了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*
终止守护进程时,守护进程终止,但syslog中缺少文本pythonDaemon STOP。
我在做什么错?
注意:我不是在from daemon import runner
这里工作,因为这给我一个错误(看起来像我需要一个老版本lockfile
),我不会解决这个问题,除非它是获得信号处理权的唯一可能性。