2012-05-14 16 views
1

プロセスを継続的に監視しなければならず、プロセスIDを使用してプロセスを監視します。私は手作業で再スケジュールするようにプロセスが停止したら電子メールを送信するプログラムを書いたが、しばしばプロセス(基本的に別のpythonプログラム)の再スケジュールを忘れる。私はapschedulerモジュールを見つけ、cronスタイルのスケジューリング(http://packages.python.org/APScheduler/cronschedule.html)を使用して、プロセスが停止したらプロセスを起動しました。プロセスのPIDが一旦消去されると、プロセスを起動することができましたが、私がapschedulerを使用して起動すると、新しくスケジュールされたプロセスのプロセスID(PID)を取得できません。したがって、私はプロセスを監視することができません。 apschedulerにスケジュールされたプロセスのプロセスIDを取得する機能はありますか?python apschedulerを使用してジョブをスケジュールする

答えて

3

pidを返すためにAPScheduleに頼るのではなく、プログラムがpid自体を報告しないようにしてください。デーモンには、実行中のプロセスのpidだけを含む既知の場所にあるファイルであるpidファイルがあるのが一般的です。ただ、このようなもので、あなたの主な機能をラップ:

import os 

try: 
    with open("/tmp/myproc.pid") as pidfile: 
     pidfile.write(str(os.getpid())) 
    main() 
finally: 
    os.remove("/tmp/myproc.pid") 

今、あなたはあなたのプロセスを監視するたびに、まずPIDファイルに存在するかを確認することができ、そしてそれがない場合には、更なるためのプロセスのPIDを取得モニタリング。これは、cronの特定の実装とは独立しているという利点があり、プログラムとローカルでやりとりするプログラムをさらに作成したい場合には、将来容易になります。

関連する問題