4

python-daemonライブラリを使用して python にデーモンを実装しました。

ただし、デーモンは定期的に死ぬ (または強制終了される) ように見えますが、その周期は 1 日から数か月までさまざまです。

例外をキャッチしてファイルに記録し、メールで送信することで、デーモンが停止した理由を見つけようとしました。私のスクリプトのデーモン部分は、おおよそ次のようになります。

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)

かなりの数の例外がログに記録されてメールで送られてきたため、コードが一般的に機能することはわかっています。

ほとんどの場合、何も得られず、ウォッチドッグ スクリプトによって、デーモンが実行されていないことが警告されます。デーモンが死んでいるか殺されている理由を見つけたり追跡したりできる方法はありますか?

4

1 に答える 1

2

メールを送信しているときに、メモリ消費量を確認してください。メモリ リークが発生し、使用可能なすべての RAM を消費すると停止する可能性があります。このresourceモジュールにより、アプリはその maxrss、ixrss、idrss、および isrss を見つけることができます。これらを 5 分ごとに 1 回ログに記録すると、メモリ リークが発生しているかどうかが明らかになります。

于 2011-07-07T05:20:04.360 に答える