15 分ごとにログ ファイルを開いて、ファイルが「ファイナライズ」文字列を呼び出しているかどうかを確認しようとしています。ファイルの文字列を確認する方法は知っていますが、スクリプトを 15 分ごとに表示する簡単な方法があるかどうかはわかりません。
これを可能にする何らかのモジュールはありますか?
[編集]キュープログラムを書いているので、これが欲しいです。つまり、あるジョブがファイナライズを呼び出すと、スクリプトは別のジョブをロードし、終了するまで監視します。
15 分ごとにログ ファイルを開いて、ファイルが「ファイナライズ」文字列を呼び出しているかどうかを確認しようとしています。ファイルの文字列を確認する方法は知っていますが、スクリプトを 15 分ごとに表示する簡単な方法があるかどうかはわかりません。
これを可能にする何らかのモジュールはありますか?
[編集]キュープログラムを書いているので、これが欲しいです。つまり、あるジョブがファイナライズを呼び出すと、スクリプトは別のジョブをロードし、終了するまで監視します。
モジュールはこれsched
を可能にします。モジュール内のTimer
クラスも同様です。threading
ただし、どちらもあなたが望むものにはやり過ぎです。
これを行うための簡単で一般的に最適な方法は、システムのスケジューラ (Windows のスケジュール タスク、Mac の Launch Services、cron
または他のほとんどのシステムの関連プログラム) を使用して、プログラムを 15 分ごとに実行することです。
または、 を使用して、が実際に前回より 15*60 秒遅れているtime.sleep(15*60)
かどうかを確認します。time.time()
スクリプトを外部からトリガーする利点の 1 つは、トリガーの変更が非常に簡単になることです。たとえば、スクリプトをまったく変更せずに、15 分ごとではなく、ファイルが変更されるたびにトリガーするように変更できます。(もちろん、これを行う正確な方法は、プラットフォームによって異なります。LaunchServices、famd、inotify、FindFirstChangeNotification などはすべてまったく異なる方法で動作します。しかし、すべての最新のプラットフォームには、それを行う何らかの方法があります。)
python-tailモジュールを見てください:
import tail
def print_line(txt):
print 'finalize' in txt
t = tail.Tail('/var/log/syslog')
t.register_callback(print_line)
t.follow(s=60*15)