django의 기본 Statreloader를 Facebook의 Watchman으로 교체

당신이 달릴 때 무대 뒤에서 무슨 일이 있었는지 생각해 본 적이 있습니까?python manage.py runserver개발하는 동안 프로젝트의 기본 디렉토리에 있습니까?
일반적으로 친숙한 출력을 얻습니다.

$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
March 24, 2022 - 11:54:06
Django version 3.2.11, using settings 'wallet.settings'
Starting development server at http://127.0.0.1:8000/


터미널 출력 상단에 표시된 대로Watching for file changes with StatReloader개발 중에 .py 파일이 변경될 때마다 웹 서버를 자동으로 다시 로드하는 기본 "file-watcher/file-reloader"인 Statreloader는 파일을 확인하는 루프를 실행하여 작동하는 단순class에 지나지 않습니다. 1초마다 변경되므로 더 큰 프로젝트를 작업할 때 상당히 비효율적일 수 있습니다.
이제 기본 Statreloader에 대한 다른 대안을 실험하거나 효율성 및 리소스 최적화(예: 배터리 사용량, 메모리)가 중요한 대규모 코드베이스에서 작업하는 경우를 제외하고는 statreloader를 고수하는 것이 좋습니다. 작업하려면 사전 설정이 필요합니다.

워치맨 소개



Watchman은 파일 변경 사항을 감시하기 위해 Facebook에서 도입한 파일 감시 서비스로, 운영 체제에 의존하여 파일이 변경될 때마다 신호를 보냅니다.
Django는 파일에 대한 최근 변경 사항이 있을 때 알림을 받고 최근 변경 사항을 포함하도록 서버를 빠르게 다시 로드합니다.
이렇게 하면 파일 변경이 없을 때 어떤 프로세스도 계속 실행하지 않으므로 watchman이 더 나은 대안이 되어 더 나은 CPU 리소스 최적화로 이어집니다.

워치맨 설치



Watchman은 실행 중인 운영 체제에 의존하여 파일 변경 알림 신호를 받기 때문에 OS 선택에 따라 사용자 경험이 지연될 가능성이 큽니다.

개인적으로 저는 linux/debian 배포판을 사용하고 있으며 Linux PC에서 Watchman을 설정하는 방법에 대한 놀라운 기사를 찾았습니다.
Setting up watchman on linux
Windows/Mac OS를 실행 중인 경우 공식 문서 페이지Setup Watchman on windows or Macos에 지정된 지침을 통해 Watchman을 설정할 수 있습니다.
Windows에서 초콜릿으로 설정하는 것은 매우 간단합니다.

WatchmanReloader를 사용하도록 Django 설정



django가 watchman과 함께 작동하도록 하는 것은 매우 간단합니다. 먼저 기본 디렉토리로 cd하고 python, 즉 pywatchman용 watchman 클라이언트/래퍼를 설치해야 합니다.

가상 환경 활성화$ source walletenv/bin/activate
Pywatchman을 설치하십시오$ pip install pywatchman
개발 서버를 다시 실행$ python3 manage.py runserver
이제 django가 WatchmanReloader를 사용하고 있음을 알 수 있습니다.

Watching for file changes with WatchmanReloader
Performing system checks...

System check identified no issues (0 silenced).
March 25, 2022 - 13:53:33
Django version 3.2.11, using settings 'wallet.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.


현재 작업 중인 것과 특별히 관련이 없는 설정이 있는 응용 프로그램을 빌드하는 경우 동일한 디렉터리에 .watchmanconfig 파일을 포함하기만 하면 이러한 특정 디렉터리/파일의 알림을 무시하도록 watchman을 구성할 수 있습니다. 당신의 manage.py 파일입니다.touch .watchmanconfignano .watchmanconfig{
"ignore_dirs": ["DIRECTORY_YOU'd_WANT_TO_IGNORE_CHANGES_FROM"]
}

결론



성능은 확장 가능한 애플리케이션을 구축할 때 중요한 척도이며 개발 프로세스를 최적화하는 것도 이에 대한 매우 중요한 요소입니다.
이 짧은 기사에서 우리는 더 빠르고 메모리 친화적인 파일 감시 서비스를 사용하여 개발 프로세스를 최적화하는 방법을 살펴보았습니다.
기사가 마음에 드셨기를 바라며 그 동안 기사에 대한 의견과 사용자 경험을 개선하기 위해 만들 수 있는 수정 사항을 알려주세요. 읽어 주셔서 감사합니다. 즐거운 시간 보내세요!

좋은 웹페이지 즐겨찾기