在Google上搜索会显示x2代码段.第一个结果是这个代码配方有很多文档和解释,以及下面的一些有用的讨论.
但是,另一个代码示例虽然不包含如此多的文档,但包含用于传递命令(如启动,停止和重新启动)的示例代码.它还会创建一个PID文件,可以方便地检查守护程序是否已在运行等.
这些示例都解释了如何创建守护进程.还有其他事情需要考虑吗?一个样本比另一个好,为什么?
如果这是一个新手问题,我是守护进程的新手.
在其他几个答案中(例如,这个问题),人们建议使用python-daemon包,因为它完全实现了PEP 3143标准.
不幸的是,python-daemon 在文档上有点亮(或者更有可能我对知识/经验有点轻视......;)),我想我可能遗漏了一些非常基本的东西.这是我正在做的事情:
我有以下内容:
import daemon
logfile = open('daemon.log', 'w')
context = daemon.DaemonContext(stdout = logfile, stderr = logfile)
context.open()
with context:
do_something_1()
do_something_2()
Run Code Online (Sandbox Code Playgroud)
问题:如何使用python-daemon设置守护进程,如何启动并停止它?
附注:
我基本上猜测这个.open()方法应该如何/是否应该在这里使用 - 文档在这一点上并不是很明确.无论我是否包括它,似乎都会发生同样的事情.
所以,现在我该怎么办?当我尝试运行此文件时,例如:
python startConsumerDaemons.py
Run Code Online (Sandbox Code Playgroud)
它似乎运行do_something_1(),但不是第二个.而且,它似乎离开程序连接到终端窗口.IE,stdout没有重定向,当我关闭终端窗口时,进程被终止.所以,我很确定我在这里做错了什么......我应该做些什么呢?
最后,一旦我让守护进程运行,我该如何停止/重启它(例如,如果我对底层代码进行了更改)?