ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] watchdog 액티브리로딩 프레임워크
    Python 2024. 6. 25. 15:38
    반응형

    액티브 프레임워크란 무엇인가?

    > 액티브리로드란 코드가 변경되었음을 인식하는프레임워크다. 이를 통해 우리는 어플리케이션을 별도로 개발했을 때 자동으로 리로드 되는 편리함을 가지고 있다.

    액티브 프레임워크가 무엇인지를 떠나서 기본적으로 다들 보통일반적인 프레임워크들을 많이 사용 했을 것이다 [장고,플라스크 등등)

    왜 사용하는가?

    > 해당 기법을 사용하지 않으면 변경할 때 마다 프로그램을 껏다 켜줘야하는 귀찮은 상황이 발생한다.

     

    사용법)

    - install

    $  pip install watchdog

    직접 코드상에 설정하여 감시.

    import sys
    import time
    import logging
    from watchdog.observers import Observer
    from watchdog.events import LoggingEventHandler
    
    if __name__ == "__main__":
        logging.basicConfig(level=logging.INFO,
                            format='%(asctime)s - %(message)s',
                            datefmt='%Y-%m-%d %H:%M:%S')
        path = sys.argv[1] if len(sys.argv) > 1 else '.'
        logging.info(f'start watching directory {path!r}')
        event_handler = LoggingEventHandler()
        observer = Observer()
        observer.schedule(event_handler, path, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1)
        finally:
            observer.stop()
            observer.join()

    Shell Command 명령을 통한 감시.

     watchmedo log --patterns="*.py;*.txt" --ignore-directories --recursive --verbose .

     

    recursive 플래그는 현재 작업데리텍터리를 재귀적으로 감시한다.     

     

    사용 예시) 

    도커 환경이나 기타 다른 환경에서 이미지를 다시 빌드하고 컨테이너를 재시작하면 너무 많은 시간이 낭비된다.

    따라서 개발하는 환경을 볼륨으로 잡고  액티브리로딩폴더를 적용한다고 한다.

    하지만 웬만한 프레임워크들은 기본적으로 다 액티브리로딩을 지원하긴 함

     

    [참고]

    https://github.com/gorakhargosh/watchdog

    반응형

    'Python' 카테고리의 다른 글

    ModuleNotFoundError: No module named '_lzma'  (0) 2023.10.27
    Python 내장함수 eval(), zip()  (0) 2020.12.29

    댓글

Designed by Tistory.