brunch

You can make anything
by writing

C.S.Lewis

by 장영석 Jul 25. 2018

Managing the uWSGI Server

Managing the uWSGI Server


Starting the server


uWSGI 서버 시작은 웹 서버를 시작하는 것과 같은 시스템 관리자의 역할이다. uWSGI서버를 시작하는 것이 웹 서버의 역할이 되어서는 안된다.


부팅시에 uWSGI를 시작하는 최선의 방법은 사용하는 운영체제에 따라 다르다.


현대 시스템에서는 다음과 같은 방법이 가능하다. 클래식 운영체제에서는 init.d/rc.d 스크립트 또는 Supervisor, Daemontools, inetd/xinetd 같은 툴을 사용해라.


Signals for controlling uWSGI


uWSGI에게 마스터 프로세스 PID를 safe-pidfile 옵션을 사용하여 파일에 기록하도록 지시할 수 있다.


uWSGI 서버는 다음 시그널들에 대해 응답한다.


Reloading the server

마스터 프로세스 모드로 실행하면, uWSGI서버는 메인소켓을 닫는일 없이 우아하게 재시작 될 수 있다.


이 기능을 사용하면 웹서버와의 연결끊어짐과 단일 요청을 잃지 않고 uWSGI서버를 패시/업그레이드할 수 있다.


SIGHUP 시그널을 마스터 프로세스에 보내면 현재 실행중인 요청의 완료를 기다리면서, 모든 워커를 우아하게 중지하려고 시도한다.


그리고나서 uWSGI와 관련없는 열려있는 모든 파일 디스크립터를 닫는다.


마지막으로, uWSGI프로세스 이미지를 새로운 파일로 바이너리 패치(execve()를 사용)하여 이전의 모든 파일 디스크립터를 상속한다.


서버는 리로드된 인스턴스인것을 알고 이전 소켓을 재사용하여 모든 소켓의 초기화를 건너뛴다.


uWSGI의 우아한 재시작을 위한 몇가지 방법이다.

또는 파이썬 애플리케이션에서

또는 루비에서


Stopping the server

어떤 이유로 포어그라운드에서 uWSGI 프로세스가 실행중이라면, 그냥 CTRL+C 를 사용해서 중지시켜라.


백그라운드 프로세스를 다룰때는, 마스터 pidfile을 다시 사용해야 한다. SIGINT 시그널은 uWSGI 를 죽인다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari