私は、FTP にアップロードされた非常に大きな画像に対して md5sum を実行する単純なウォッチドッグ スクリプトに取り組んでいます。ウォッチドッグには、pyinotify に存在する IN_CLOSE_WRITE イベントがないようです。回避策としてファイルがまだ開いているかどうかを確認しようとしましたが、うまくいきません。ウォッチドッグから close_write イベントを取得するための回避策を知っている人はいますか?
import sys
import time
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
path = sys.argv[1]
class MyEventHandler(FileSystemEventHandler):
def on_modified(self, event):
print "File uploaded"
# Is file still uploading?
f = open(event.src_path)
if f.closed:
print "....run md5 & email admin"
event_handler = MyEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()