본문 바로가기
Event 감시 - 파이썬 #코드스니핏

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

댓글