我一直在跟踪this example来实现一个python守护进程,它似乎有些工作,但只调用了reconfigure函数。在
这是我一直使用的代码:
import signal
import daemon
import lockfile
import manager
context = daemon.DaemonContext(
working_directory='/home/debian/station',
pidfile=lockfile.FileLock('/var/run/station.pid'))
context.signal_map = {
signal.SIGTERM: manager.Manager.program_terminate,
signal.SIGHUP: 'terminate',
signal.SIGUSR1: manager.Manager.program_reload_configuration,
}
manager.Manager.program_configure()
with context:
manager.Manager.program_start()
以下是manager类的代码:
^{pr2}$日志只显示:
INFO:root:Configuring program
由于某些原因,program_start()
没有被调用。
program_configure()
在每次读取python文件时都被调用,所以就是这样,但是为什么不调用{
我通过键入sudo service station.sh start
启动守护程序,运行脚本的行是:
python $DAEMON start
编辑:
读了一点之后,我意识到程序可能退出或挂起在context.__enter__()
(with
调用它)。但我不知道是什么原因造成的
问题不在于python守护进程没有调用函数,而是日志记录不起作用。在
当守护进程创建一个新进程时,它不会从主进程传输所有文件句柄,因此不会写入日志。有关详细信息,请参见this question。在
解决方法是使用
files_preserve
属性,如下所示:相关问题 更多 >
编程相关推荐