我针对这个问题提出了一个问题,但没有得到足够彻底的答案来解决该问题(很可能是由于在解释我的问题时缺乏严谨性,这正是我试图纠正的):Zombie process in python multiprocessing daemon
我正在尝试实现一个 python 守护进程,它使用工作池来使用Popen. 我从http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/借用了基本守护进程
我只改变了init, daemonize(或同样的start) 和stop方法。以下是该方法的更改init:
def __init__(self, pidfile):
#, stdin='/dev/null', stdout='STDOUT', stderr='STDOUT'):
#self.stdin = stdin
#self.stdout = stdout
#self.stderr = stderr
self.pidfile = pidfile
self.pool = Pool(processes=4)
Run Code Online (Sandbox Code Playgroud)
我没有设置 stdin、stdout 和 stderr,以便我可以使用 print 语句调试代码。另外,我尝试将此池移动到几个地方,但这是唯一不会产生异常的地方。
以下是该方法的更改daemonize:
def daemonize(self):
...
# redirect standard file descriptors
#sys.stdout.flush()
#sys.stderr.flush()
#si = open(self.stdin, 'r')
#so = open(self.stdout, 'a+')
#se = open(self.stderr, 'a+', 0) …Run Code Online (Sandbox Code Playgroud)