정상 종료를 위한 SIGTERM 처리
실제 애플리케이션의 맥락에서는 프로세스가 종료 신호를 적절하게 처리할 수 있는지 확인하는 것이 중요합니다. 갑작스러운 중단을 방지하기 위해. Python에서 데몬 프로세스를 관리할 때 SIGTERM(TERM) 처리는 일반적인 요구 사항입니다.
다음 데몬 프로세스 예제를 고려하세요.
def mainloop(): while True: # Important operations # ... # Sleep
문제:
데몬 프로세스가 기본적으로 SIGTERM 신호를 받으면 실행 흐름이 즉시 중단되어 진행 중인 작업을 완료하지 못한 채 프로세스가 종료됩니다.
질문:
현재 실행 흐름을 중단하지 않고 SIGTERM을 정상적으로 처리할 수 있나요? 목표는 별도의 스레드 내에서 종료 플래그를 설정하여 프로세스가 현재 작업을 마친 다음 정상적으로 종료하도록 하는 것입니다.
해결책:
사용 Graceful Killer 클래스:
간단한 GracefulKiller 클래스를 활용하여 SIGTERM을 우아하게 처리할 수 있습니다.
import signal import time class GracefulKiller: kill_now = False def __init__(self): signal.signal(signal.SIGINT, self.exit_gracefully) signal.signal(signal.SIGTERM, self.exit_gracefully) def exit_gracefully(self, signum, frame): self.kill_now = True if __name__ == '__main__': killer = GracefulKiller() while not killer.kill_now: time.sleep(1) print("Performing operation...") print("Process exited gracefully.")
이 솔루션에서는:
위 내용은 Python 프로세스가 중단 없이 SIGTERM을 정상적으로 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!