Python 守护进程意外死亡
我有一个python脚本,我使用下面的代码对其进行后台监控Python 守护进程意外死亡,python,daemon,Python,Daemon,我有一个python脚本,我使用下面的代码对其进行后台监控 def daemonise(): from os import fork, setsid, umask, dup2 from sys import stdin, stdout, stderr if fork(): exit(0) umask(0) setsid() if f
def daemonise():
from os import fork, setsid, umask, dup2
from sys import stdin, stdout, stderr
if fork(): exit(0)
umask(0)
setsid()
if fork(): exit(0)
stdout.flush()
stderr.flush()
si = file('/dev/null', 'r')
so = file('daemon-%s.out'%os.getpid(), 'a+')
se = file('daemon-%s.err'%os.getpid(), 'a+')
dup2(si.fileno(), stdin.fileno())
dup2(so.fileno(), stdout.fileno())
dup2(se.fileno(), stderr.fileno())
print 'this file has the output from daemon%s'%os.getpid()
print >> stderr, 'this file has the errors from daemon%s'%os.getpid()
剧本已经完成了
while True: try: funny_code(); sleep(10); except:pass;
循环。它正常运行了几个小时,然后意外死亡。我如何调试这样的恶魔,错误守护进程
[编辑]
如果不启动像monit这样的进程,有没有办法用python编写一个看门狗,它可以监视我的其他守护进程并在它们停止时重新启动?谁看看门狗。我在客户身上使用的是。它是一个经过验证、经过良好测试的工具,可以运行任何daemonized 您只需编写应用程序而无需任何后台处理,即可在前台运行;然后为它创建一个daemontools服务文件夹,从现在起,每次系统重新启动时,它都会发现并自动重新启动应用程序
它还可以处理日志旋转和其他操作。节省了大量繁琐的重复工作。我在客户中使用的是。它是一个经过验证、经过良好测试的工具,可以运行任何daemonized 您只需编写应用程序而无需任何后台处理,即可在前台运行;然后为它创建一个daemontools服务文件夹,从现在起,每次系统重新启动时,它都会发现并自动重新启动应用程序
它还可以处理日志旋转和其他操作。节省了大量繁琐的重复工作。为什么要默默地接受所有异常?尝试查看此操作捕获了哪些异常:
while True:
try:
funny_code()
sleep(10)
except BaseException, e:
print e.__class__, e.message
pass
一些意想不到的事情可能会发生,导致它失败,但是如果你盲目地忽略所有的异常,你永远不会知道
我建议使用Python编写的,非常容易用于后台监控和监视进程。在supervisord下运行时,您不必使用daemonise功能。为什么要默默地接受所有异常?尝试查看此操作捕获了哪些异常:
while True:
try:
funny_code()
sleep(10)
except BaseException, e:
print e.__class__, e.message
pass
一些意想不到的事情可能会发生,导致它失败,但是如果你盲目地忽略所有的异常,你永远不会知道
我建议使用Python编写的,非常容易用于后台监控和监视进程。在supervisord下运行时,您不必使用daemonise函数。您确实应该使用它,它是一个为标准守护进程进程库实现的库。通过这种方式,您将确保应用程序在任何类型的UNIX下都能正常运行。无需重新发明轮子。您确实应该使用它,它是一个为标准守护进程进程库实现的库。通过这种方式,您将确保应用程序在任何类型的UNIX下都能正常运行。无需重新发明轮子。我可能会添加一些类似monit的东西来进行监视,但我需要调试,为什么它经常失败。daemontools。。。嗯,它是由djb编写的,所以我只是对它需要的配置持谨慎态度@usaretech:这次不是-您只需使用名为run的脚本创建一个文件夹。这是一个服务。我可能会添加一些类似于monit的东西来进行监视,但我需要调试,为什么它经常失败。daemontools。。。嗯,它是由djb编写的,所以我只是对它需要的配置持谨慎态度@usaretech:这次不是-您只需使用名为run的脚本创建一个文件夹。这是一种服务。