bash 스크립트를 통해 우아한 uwsgi를 다시로드하는 방법은 무엇입니까?


9

bash 스크립트를 실행하는 django 응용 프로그램이 있습니다. nginx 서버를 다시 시작해야하므로 제대로 /etc/init.d/nginx reload작동합니다. restart uwsgiuwsgi 에 사용 했지만 하드 서버를 다시 시작하는 대신 정상적으로 다시로드 해야합니다 .

어떻게해야합니까?


현재을 reload uwsgi통해 bash 함수를 실행 중 subprocess.popen입니다. uwsgi 인스턴스가 호스팅하는 모든 사이트가 아닌 하위 프로세스를 호출하는 프로세스 만 다시로드하는 것 같습니다. importing uwsgi실행 uwsgi.reload은 호출 프로세스에만 영향을 미치는 것으로 보입니다. 모든 uwsgi 프로세스를 다시 시작할 수있는 python 또는 bash를 통한 uwsgi 스위치가 있습니까?

답변:


0

파이썬으로 할 수 있습니다

import uwsgi
uwsgi.reload()

uwsgi.reload ()가 간헐적으로 작동합니다. 내 프로세스 중 일부가 완료되기 전에 서버를 다시 시작하는 것 같습니다. django 응용 프로그램을 통해 이것을 실행하고 전체 서버를 다시 시작하려고합니다.
darren

10

SIGHUP

다음과 같이 SIGHUP 신호를 uWSGI 프로세스에 전송하여 uWSGI를 다시 시작할 수 있습니다.

kill -HUP <process-id>

bash 스크립트에서 이것을 자동화하려면 다음 pidfile과 같이 옵션 을 제공하여 uWSGI가 프로세스 ID를 쓰도록 할 수 있습니다 .

--pidfile=/tmp/uwsgi.pid

그런 다음 다음을 수행하여 프로세스를 다시로드 할 수 있습니다.

uwsgi --reload /tmp/uwsgi.pid

터치 새로 고침

touch-reload터치 할 때 uWSGI를 다시로드하는 파일을 지정하는 인수로 uWSGI를 시작할 수도 있습니다 .

--touch-reload=/some/file

그런 다음 파일을 터치하면 uWSGI가 다시로드됩니다.

touch /some/file

마스터 프로세스 모드로 실행 중일 때만 uWSGI를 다시로드 할 수 있지만 일반적으로 그러합니다.

자세한 정보 : http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.