Python 스크립트가 수정 될 때 uWSGI를 다시 시작하려면 어떻게해야합니까?


38

위치를 기억할 수는 없지만 프로젝트 스크립트가 수정되면 uWSGI가 Django 개발 서버처럼 다시로드 될 수 있다고 읽었습니다. 나는 문서 나 인터넷 에서 그것을 찾을 수 없습니다 . 어떻게해야합니까?

작업 시스템에서 Ubuntu 12.04를 사용하고 무대 및 프로덕션 서버에서 Dbiano 1.4 및 uWSGI 1.2에서 Debian Squeeze를 사용합니다.

답변:




10

django 자동 재로드를 잃지 않으려면이 재로드 방법을 등록하십시오 (예 : settings.py).

import uwsgi
from uwsgidecorators import timer
from django.utils import autoreload

@timer(3)
def change_code_gracefull_reload(sig):
    if autoreload.code_changed():
        uwsgi.reload()

이제 코드를 변경하면 다시로드됩니다.

저자 : Simone Federici


1
이것은 완벽하게 작동했습니다. 또한 조건을 추가하여 개발 환경에서만 호출됩니다.
2upmedia

0

uwsgi는 kill SIGNAL을 사용하여 다시 시작할 수도 있습니다. 나는 그것을 아래와 같이 사용한다 :

# ps -efa | grep uwsgi | grep prod
app  13390 13383  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13417 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13419 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
# kill -HUP 13390

동일한 명령을 실행하면 자식 프로세스 pid가 마스터에 의해 다시 생성 될 때 변경됩니다. 또한 마스터 / 작업자 프로세스 수에 대한 uwsgi 구성을 확인하십시오. 이 방법은 사용 가능한 도구 나 다른 자동화 도구와 쉽게 통합되므로 원격으로 쉽게 사용할 수 있습니다.

--touch-reload로 시작하기 위해 원본 프로세스가 필요하지 않습니다.

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