一定期間ファイルが更新されなければタイムアウトしたい

run()を実行すると,write_log関数によってlogファイルが数秒置きに(下のコードだと10秒置き)に更新されます.もし,ファイルの更新が5分間滞ったら,write_logの処理を停止したいと考えています.

python

import time def write_log(): for i in range(100): with open("test.log","a") as f: f.write("~~~\n") time.sleep(10) def run(): print("開始") write_log() print("終了") run()

このコードでは確実に10秒ごとにファイルが更新されますが,実際にはwrite_logのような処理をライブラリを用いて行っており,数時間ファイルが更新されないような時があり,処理に時間がかかる場合には,処理を中断し次の処理を行なうようにしたいと考えています.

試したこと

タイムアウトさせるためのライブラリとしてtimeout-decoratorなどを調べましたが,write_log()の処理に対してタイムアウトの時間を設定することはできますが,ファイルの更新時間に対してタイムアウトを設定することはできません.
write_log()のコードをいじれば実現できますが,ライブラリのソースコードは変えたくありません.

おそらく非同期処理でwrite_logが走っている間にファイルの更新を監視する事になると思いますがやり方が分かりません.

よろしくお願いいたします.

コメントを投稿

0 コメント