Как найти причину смерти процесса демона python? - PullRequest
4 голосов
/ 13 июня 2011

У меня есть демон, реализованный в python с использованием библиотеки python-daemon .

Однако демон, похоже, периодически умирает (или убивается), где периодически меняется от одного днядо нескольких месяцев.

Я пытался найти причину смерти демона, перехватывая исключения, записывая их в файл и отправляя по почте мне.Демоническая часть моего скрипта выглядит примерно так:

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 Ответ

2 голосов
/ 07 июля 2011

Пока вы отправляете почту, проверьте потребление памяти.Возможно, он имеет утечку памяти и умирает, когда он использует всю доступную оперативную память.Модуль resource позволит приложению узнать его maxrss, ixrss, idrss и isrss, и если вы регистрируете их каждые 5 минут или около того, должно быть очевидно, происходит ли утечка памяти.

...