私はpython-daemonを使用していますがkill -9
、プロセス時にpidfileが残り(ok)、次にプログラムを実行したときに、手動でpidfileを削除しない限り機能しないという問題があります(わかった)。
終了する前に呼び出されるすべての例外を順番にキャッチします。context.close()
これが発生すると(たとえば、kill
)/ var / run / mydaemon.pid *ファイルが削除され、後続のデーモンの実行が成功します。ただし、SIGKILL(kill -9
)を使用する場合、を呼び出す機会がなくcontext.close()
、/ var/runファイルが残ります。この場合、次にプログラムを実行すると、プログラムは正常に起動しません。元のプロセスは戻りますが、デーモン化されたプロセスはでブロックされcontext.open()
ます。
python-daemonは、プロセスのpidfileが存在しないことに気づき、それをクリアする必要があるようですが、それは発生していません。私はこれを手作業で行うことになっていますか?
with
注:このコードはPython 2.4で実行されるため、使用していません
from daemon import DaemonContext
from daemon.pidlockfile import PIDLockFile
context = DaemonContext(pidfile = PIDLockFile("/var/run/mydaemon.pid"))
context.open()
try:
retry_main_loop()
except Exception, e:
pass
context.close()