Observer를 이용하고, MyEventHandler를 통해서 특정 폴더에 파일이 생성되면 실행하는 Event Driven 코드임.
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
import threading
class MyEventHandler(FileSystemEventHandler):
def __init__(self):
self.event_occurred = threading.Event()
def on_any_event(self, event):
print(f"이벤트 발생: {event.event_type} - {event.src_path}")
self.event_occurred.set()
def watch_directory(path):
event_handler = MyEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
# 이벤트가 발생할 때까지 대기
event_handler.event_occurred.wait()
# 이벤트 처리 로직
print("이벤트 처리 중...")
#time.sleep(1) # 실제 처리 로직을 여기에 구현
# 이벤트 플래그 초기화
event_handler.event_occurred.clear()
except KeyboardInterrupt:
observer.stop()
observer.join()
if __name__ == "__main__":
watch_directory("/path/to/watch")
- 실시간 감지: inotify 시스템은 파일 시스템 변경을 실시간으로 감지. observer가 계속 실행 중이어야 이러한 실시간 이벤트를 놓치지 않고 처리할 수 있음
- 이벤트 기반 작동: watchdog 라이브러리는 이벤트 기반으로 작동합니다5. 파일 시스템 변경이 발생할 때마다 즉시 해당 이벤트를 처리할 수 있어야 함
- 지속적인 모니터링: 파일 시스템 변경을 지속적으로 모니터링하기 위해서는 프로그램이 계속 실행 중이어야 함
/rinugseueseo-poldeoe-saeroun-p-X64sfPOIS7WaX4TT_MqfNA
댓글