Microsoft MVP성태의 닷넷 이야기
스크립트: 38. 파이썬 - uwsgi의 --master 옵션 [링크 복사], [링크+제목 복사],
조회: 18151
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

파이썬 - uwsgi의 --master 옵션

지난 글에서,

파이썬 - uwsgi의 --enable-threads 옵션
; https://www.sysnet.pe.kr/2/0/12886

uwsgi의 프로세스 구조가 gunicorn과는 다르다고 했는데요, 이 구조를 gunicorn처럼 만드는 방법이 바로 --master 옵션입니다. 그래서 이를 사용해 uwsgi를 실행하면 다음과 같은 식의 프로세스 구조로 바뀌고,

$ pstree -p | grep uwsgi
        |-init(181)---init(182)---bash(183)---uwsgi(6112)-+-uwsgi(6119)-+-{uwsgi}(6121)
        |                                                 |             `-{uwsgi}(6122)
        |                                                 |-uwsgi(6120)
        |                                                 |-{uwsgi}(6116)
        |                                                 `-{uwsgi}(6117)

이때 요청 페이지에서 os.getpid()를 호출해 보면 (예전에는 6112를 반환했지만) --master 모드에서는 6119가 반환됩니다. 즉, gunicorn의 동작 방식과 유사해지는 것입니다. 참고로 아래의 글을 보면,

uWSGI의 고급 기능들
; https://blog.sapzil.org/2015/10/24/advanced-uwsgi/

--master 모드에서만 가능한 "Graceful reload" 기능도 있다고.

uWSGI는 Gunicorn과 리로드 동작 방식이 다르다. 먼저 uWSGI는 master 모드로 실행해야 graceful reload가 가능하다. 또한 Gunicorn은 HUP 시그널을 받으면 기존 프로세스는 그대로 둔 채 먼저 새로운 워커 프로세스를 실행하고 이전 워커를 하나씩 종료하는 방식인데 반해, uWSGI는 먼저 워커 프로세스를 모두 종료한 뒤 새로운 워커를 실행하는 방식이다. 따라서 uWSGI에서는 리로드되는 동안 들어오는 요청은 처리가 지연될 수 있다. (단, Gunicorn과 달리 리로드 되는 동안에도 메모리 사용량이 증가하지 않는다.)





그리고 --master 모드에서만 가능한 또 다른 기능이 있습니다.

Python3 threading with uWSGI
; https://stackoverflow.com/questions/32059634/python3-threading-with-uwsgi

위의 글에서 소개하고 있는 uwsgidecorators 모듈은,

import uwsgidecorators

기본 모드에서 사용하려는 경우 이런 오류 메시지를 보게 됩니다.

you have to enable the uWSGI master process to use this module

또는,

No module named 'uwsgi'

친절하게 방법도 알려주고 있는데요, 따라서 --master 옵션을 넣고 실행하면 화면에 다음과 같은 메시지가 출력되는 것과 함께,

$ uwsgi --http :18091 --chdir /mnt/d/pycharm/work/myapp --wsgi-file ./myapp/wsgi.py --master
...[생략]...
spawned uWSGI master process (pid: 6237)
spawned uWSGI worker 1 (pid: 6244, cores: 1)
spawned uWSGI http 1 (pid: 6245)

이후, "import uwsgidecorators" 명령을 실행하면 오류 없이 잘 나옵니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 12/23/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 181  [182]  183  184  185  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
494정성태5/26/200729142오류 유형: 35. 비스타 탐색기 - 특정 파일을 오른쪽 마우스 클릭했을 때, 비정상 종료되는 문제
493정성태5/26/200728365오류 유형: 34. Windows Server 2008 : CA 인증서 발급 실패
492정성태5/23/200727862.NET Framework: 89. ManagedThreadId - 두 번째 이야기 [5]파일 다운로드1
491정성태5/21/200728110.NET Framework: 88. ManagedThreadId ? [4]
490정성태5/19/200736894오류 유형: 33. error MSB6003: SxS DLL 로딩 오류 [2]
489정성태5/14/200724649.NET Framework: 87. .NET 2.0에서 C# 3.0 기능 사용하기
488정성태5/14/200722835Windows: 25. Multiple Input Queues
487정성태4/24/200728573VC++: 32. VC++에서 bool이 가지는 의미 [3]
486정성태3/22/200727561Windows: 24. DreamScene과 DWM(Desktop Window Manager)의 관계 [1]
485정성태3/17/200722768오류 유형: 32. VS.NET 2005 - x64 환경에서의 mixed 디버깅 환경 구성
484정성태3/17/200721946오류 유형: 31. SQL Compact Edition 설치 후 오류
483정성태3/17/200743357오류 유형: 30. x64 환경: .NET + COM 프로젝트 실행 시 오류 - 80040154 [2]
482정성태3/17/200732768Team Foundation Server: 17. 팀 프로젝트 접속 및 사용
481정성태3/17/200726699Team Foundation Server: 16. 팀 프로젝트 읽기 전용 사용자 등록
480정성태3/14/200725092.NET Framework: 86. GC(Garbage Collector)의 변화
479정성태3/14/200728838개발 환경 구성: 25. D820 - ReadyBoost 구동
478정성태3/14/200728414개발 환경 구성: 24. D820 고주파음 문제
477정성태3/14/200737825개발 환경 구성: 23. 비스타 x64 버전에서 서명되지 않은 드라이버 사용 [4]
476정성태3/9/200733080개발 환경 구성: 22. D820 노트북 - 설치 및 BitLocker 구성 [1]
475정성태3/6/200727310.NET Framework: 85. 공용 프로퍼티 자동 생성
474정성태3/5/200725462.NET Framework: 84. Lambda 표현식 응용 사례 [1]
473정성태3/4/200732714디버깅 기술: 14. TFS 오류 추적(TF53010, TF14105)
472정성태3/3/200731982디버깅 기술: 13. 예외 발생 시 Minidump 생성 - WinDBG [3]파일 다운로드1
471정성태3/1/200720729디버깅 기술: 12. Managed Method에 Break Point 걸기
469정성태2/28/200732591디버깅 기술: 11. (Managed) Main Method에 Break Point 걸기 [3]파일 다운로드1
470정성태3/1/200723995    답변글 디버깅 기술: 11.1. (Managed) Main Method에 Break Point 걸기 - 내용 보강
... 181  [182]  183  184  185  186  187  188  189  190  191  192  193  194  195  ...