Windows 2012 サーバーで Python ウォッチドッグ モジュールを使用して、共有ドライブに表示される新しいファイルを監視しています。ウォッチドッグが新しいファイルを認識すると、データベースの復元プロセスが開始されます。
ただし、ウォッチドッグは、ファイルが作成された瞬間にファイルの復元を試み、ファイルが共有ドライブへのコピーを完了するまで待機しないようです。そのため、イベントを on_modified に変更しましたが、2 つの on_modified イベントがあり、1 つはファイルが最初にコピーされたとき、もう 1 つはコピーが完了したときです。
2 つの on_modified イベントを処理して、共有ドライブへのファイルのコピーが完了したときにのみ発生させるにはどうすればよいですか?
複数のファイルが共有ドライブに同時にコピーされるとどうなりますか?
これが私のコードです
import time
import subprocess
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class NewFile(FileSystemEventHandler):
def process(self, event):
if event.is_directory:
return
if event.event_type == 'modified':
if getext(event.src_path) == 'gz':
load_pgdump(event.src_path)
def on_modified(self, event):
self.process(event)
def getext(filename):
"Get the file extension"
file_ext = filename.split(".",1)[1]
return file_ext
def load_pgdump(src_path):
restore = 'pg_restore command ' + src_path
subprocess.call(restore, shell=True)
def main():
event_handler = NewFile()
observer = Observer()
observer.schedule(event_handler, path='Y:\\', recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
if __name__ == '__main__':
main()