[英]Cron Restarting A Python Daemon
我有一个简单的守护程序脚本:
#!/usr/bin/python
from myClass import theClass
from daemon import runner
class App():
def __init__(self):
self.stdin_path = '/dev/null'
self.stdout_path = '/dev/tty'
self.stderr_path = '/dev/tty'
self.pidfile_path = '/tmp/foo.pid'
self.pidfile_timeout = 5
def run(self):
while True:
print 'run'
classObj = theClass()
classObj.run()
app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()
我可以使用以下命令在Terminal中启动它: python ./myDaemon.py start
有时,它会出于某种原因而突然退出。 因此,在myClass内部,每次成功运行时我都会编写一个文件。 用另一个脚本运行cron 1 * * * * python checkFile.py
我查看脚本上一次成功运行的时间是否在300秒前。 如果大于我尝试重新启动守护程序。 这是我遇到麻烦的地方。
当我在终端窗口中使用以下python ./myDaemon.py start
守护程序时: python ./myDaemon.py start
我可以关闭该窗口并开始我的业务,守护程序将继续运行。 但是,(这是我不太了解的地方)如果尝试使用os.system('python ./myDaemon.py start > /dev/null')
或使用子进程从checkFile.py
脚本中启动myDaemon.py的情况:
proc = subprocess.Popen(['python','myDaemon.py','start'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = proc.communicate()
我没有成功。 我从终端窗口手动运行了checkFile.py
并看到了myClass的输出(即使我假设上述的系统和子进程命令应该已经禁止了该操作)。 因此,守护程序启动,但是如果我关闭该窗口,则守护程序停止。
我要解决这个错误吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.