동적 서버 업그레이드를 위한 Python 모듈 다시 로드
장기 실행 Python 서버가 서버를 다시 시작하는 오버헤드 없이 서비스를 업데이트해야 하는 시나리오에서 , 질문이 생깁니다. 이것이 어떻게 달성될 수 있습니까? 구체적으로, 변경 사항을 반영하기 위해 모듈을 언로드한 후 다시 로드할 수 있는 방법은 무엇입니까?
해결책: Importlib.reload() 사용
Python 3.4 이상 , importlib.reload() 함수는 이미 가져온 모듈을 다시 로드하기 위한 솔루션을 제공합니다. 처음에 가져온 모듈을 인수로 사용하고 처음 가져온 이후의 모든 변경 사항을 통합하는 다시 로드된 모듈을 반환합니다.
구현
프로세스를 설명하려면 다음을 고려하세요. foo.py 모듈이 수정된 상황입니다. 다시 로드하는 방법은 다음과 같습니다.
from importlib import reload import foo while True: # Perform any necessary tasks if is_changed(foo): foo = reload(foo)
이 접근 방식을 사용하면 Django의 개발 서버가 코드 변경을 위해 작동하는 방식과 유사하게 서버를 다시 시작하지 않고도 서비스를 원활하게 업데이트할 수 있습니다.
기술
모듈을 다시 로드하는 것이 중요합니다. 관련 사항은 다음과 같습니다.
따라서 foo 모듈에 정의된 Foo 클래스의 인스턴스가 있는 경우 모듈을 다시 로드한 후 해당 인스턴스를 다시 인스턴스화해야 합니다.
위 내용은 서버를 다시 시작하지 않고 Python 모듈을 다시 로드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!