서문으로, Gunicorn이 서비스로 실행하는 Flask를 실행하는 Python 스크립트가 있습니다. 서비스에서 실행되는 명령 중 하나는 실행하는 데 5~10분 정도 걸리는 장기 실행 기능입니다. gunicorn 서비스는 SIGTERM을 수신하면 10분 동안 기다린 후 장기 실행 프로세스를 계속할 수 있도록 자체적으로 종료됩니다.
재부팅 시 현재 작업은 10분을 기다린 후 현재 프로세스를 종료하고 새 프로세스를 시작하는 것입니다.
재부팅 시 수행하려는 작업은 SIGUSR2를 현재 서비스에 보내 새 서비스를 시작한 다음 SIGTERM을 보내 이전 서비스를 종료하는 것입니다.
이 모든 것에 대한 대안은 SIGUSR2 및 SIGTERM 신호를 수동으로 보낸 다음 실행 중인 서비스의 PID를 새 PID로 업데이트하는 것입니다. 최선의 선택이 무엇인지 완전히 확신하지 못합니다.
답변1
Gunicorn의 내장 옵션을 좀 더 자세히 살펴봐야 할 것 같습니다. HUP 신호를 프로세스에 보내서 메인 프로세스를 중단시키고, 윈치를 보내서 새 작업자 프로세스를 만든 다음, 이전 작업자 프로세스를 종료하고 메인 프로세스에 다시 연결하세요.