我使用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)
我有很多例外记录并邮寄给我,所以我知道代码通常有效。
对于大多数情况,我什么都没得到,监视程序脚本提醒我守护程序不再运行的事实。有什么方法可以找出或跟踪守护进程死亡或被杀的原因吗?
答案 0 :(得分:2)
在邮寄内容时,请检查内存消耗情况。也许它有内存泄漏并且在消耗所有可用RAM时死亡。 resource
模块将让应用程序找出其maxrss,ixrss,idrss和isrss,如果你每5分钟左右记录一次,那么是否发生内存泄漏应该是显而易见的。