Django 소스 읽기 (4): Django의 자동 로드 메커니즘
5861 단어 Django 소스 읽기
두 프로세스
new_environ = {**os.environ, DJANGO_AUTORELOAD_ENV: 'true'}
를 설정합니다.start_django(reloader, main_func, *args, **kwargs)
, 즉 서버를 시작합니다.하위 프로세스가 종료되지 않으면subprocess에서 계속 멈춥니다.call 이 단계;만약 종료 코드가 3이 아니라면 하위 프로세스가 종료되면while는 종료됩니다.3이면 순환을 계속하여 하위 프로세스를 다시 만듭니다.#django/utils/autoreload.py
DJANGO_AUTORELOAD_ENV = 'RUN_MAIN'
...
def restart_with_reloader():
new_environ = {**os.environ, DJANGO_AUTORELOAD_ENV: 'true'}
args = get_child_arguments()
while True:
exit_code = subprocess.call(args, env=new_environ, close_fds=False)
if exit_code != 3:
return exit_code
def run_with_reloader(main_func, *args, **kwargs):
signal.signal(signal.SIGTERM, lambda *args: sys.exit(0))
try:
if os.environ.get(DJANGO_AUTORELOAD_ENV) == 'true':
reloader = get_reloader()
logger.info('Watching for file changes with %s', reloader.__class__.__name__)
start_django(reloader, main_func, *args, **kwargs)
else:
exit_code = restart_with_reloader()
sys.exit(exit_code)
except KeyboardInterrupt:
pass
실제 문제
솔루션
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 소스 읽기 (2) INSTALLEDAPPS 로드 프로세스다시 상절에서 처음 시작한 excute 함수로 돌아가서django를 분석해 봅시다.setup () 함수, 그 안에 어떻게 불러오는 설정을 하는지 보십시오 django.setup() 이니시에이터 이 코드는django/...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.