解决意外退出的python守护进程?

时间:2011-05-11 19:08:29

标签: python strace

监视python守护程序以确定其意外退出的原因的最佳方法是什么?是我最好的选择还是有特定的Python工作?

3 个答案:

答案 0 :(得分:1)

我通常会首先添加日志记录。至少,无论启动什么,它都会捕获stdout / stderr,以便保存任何堆栈跟踪。检查您的except块,确保您没有以静默方式捕获异常。

答案 1 :(得分:0)

您可以使用pdb

python -m pdb myscript.py

如果异常退出,运行这样的程序将导致它进入事后调试。如果你知道问题所在,你也可以在想要开始调试时使用import pdb; pdb.set_trace()。记录也很有帮助。

答案 2 :(得分:0)

如上所述,尝试添加Logging,但是如果使用python-daemon模块则要小心,它在登录文件时不能与Logging模块一起使用,因此您应该手动将日志记录到文件中。

此外,通过在循环内运行守护程序并在循环内捕获异常,使守护程序在失败后重新启动。

示例:

while True:
    try:
        log_to_file("starting daemon")
        run_daemon()
        log_to_file("daemon stopped unexpectedly")
        sleep(1)
    except Exception as err:
        log_to_file(err)