如何找到python守护程序进程死亡的查找原因?

时间:2011-06-13 08:48:10

标签: python daemon python-daemon

我使用python-daemon库在python中实现了一个守护进程。

该守护程序似乎会定期死亡(或被杀死),但会定期从一天到几个月不等。

我试图通过捕获异常,将它们记录到文件并将它们邮寄给我来找到守护程序死亡的原因。我的脚本的守护程序部分看起来大致如下:

import daemon

context = daemon.DaemonContext(
    working_directory='/foo/',
    pidfile=lockfile.FileLock('/foo/foo.pid')
)

try:
    with context:
        do_stuff()
except Exception, e:
    log_exception_to_file(e)
    mail_exeption_to_me(e)

我有很多例外记录并邮寄给我,所以我知道代码通常有效。

对于大多数情况,我什么都没得到,监视程序脚本提醒我守护程序不再运行的事实。有什么方法可以找出或跟踪守护进程死亡或被杀的原因吗?

1 个答案:

答案 0 :(得分:2)

在邮寄内容时,请检查内存消耗情况。也许它有内存泄漏并且在消耗所有可用RAM时死亡。 resource模块将让应用程序找出其maxrss,ixrss,idrss和isrss,如果你每5分钟左右记录一次,那么是否发生内存泄漏应该是显而易见的。