mod_wsgi 사용할 경우 application reloading

과녁스·2020년 12월 10일
0

Python

목록 보기
1/5
post-thumbnail

mod_wsgi 공식 문서의 내용 중 이런 질문이 있다. "WSGI 응용 프로그램의 Python 소스가 변경될 때마다 아파치를 재시작해야하나요?"(https://modwsgi.readthedocs.io/en/master/user-guides/frequently-asked-questions.html?highlight=touch#application-reloading)

기존에 나는 config 파일, app.py(Flask 객체가 있는 파일)을 제외하고는 'touch -c app.wsgi'를 사용하여 잘 수정하고는 했다. 그러나 기본적으로 작동한는 원리에 대한 확인이 필요하였다.

위 질문에 대한 답은 "WSGI 응용 프로그램이 WSGI 스크립트 파일 내에 완전히 포함되어 있고 변경중인 파일 인 경우에는 그렇지 않습니다. 이 경우 WSGI 스크립트 파일은 스크립트 다시로드가 비활성화되지 않은 경우 변경 사항이있을 때 자동으로 다시로드됩니다."

정확하게 이해가 되진 않지만, 결론적으로는 아파치를 재시작하지 않고 변경이 가능하다.

문서 내용을 더 살펴보면 mod_wsgi의 embedded mode에서는 변경사항 적용을 위해서는 아파치를 재시작하는 방법 밖에는 없다.

daemon mode에서는 프로세스 수와 상관없이 mod_wsgi2.0의 reload machanism 이 활성화 되어있으면 wsgi 스크립트 파일을 'touch'하여 수정시간을 업데이트하면 데몬 프로세스가 자동으로 종료되고 다음 요청을 받을때 다시 시작할 수 있다.(https://modwsgi.readthedocs.io/en/master/user-guides/reloading-source-code.html)

추가로 확인해야할 점

  • route(blueprint)를 추가할 경우에는 'touch'로 reloading 할 수 없는 경우
  • 링크 문서에 대한 내용 이해

※ 틀린 정보는 댓글 남겨주시면 수정하겠습니다^^

profile
ㅎㅅㅎ

0개의 댓글