> 백엔드 개발 > 파이썬 튜토리얼 > 내 Flask 개발 서버가 두 번 실행되는 것처럼 보이는 이유는 무엇입니까?

내 Flask 개발 서버가 두 번 실행되는 것처럼 보이는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-09 17:41:19
원래의
486명이 탐색했습니다.

Why Does My Flask Development Server Appear to Execute Twice?

두 번 실행되는 Flask 개발 서버: 이유 공개

Flask 개발 서버는 코드가 변경될 때마다 애플리케이션 재시작을 처리합니다. . 이 기능은 Werkzeug 라이브러리의 restart_with_reloader() 함수에 의해 제공됩니다.

이 함수는 하위 프로세스를 생성하고 subprocess.call()을 사용하여 스크립트를 다시 실행합니다. 결과적으로 원본 스크립트와 하위 프로세스 모두 다시 시작 메시지를 각각 한 번씩 인쇄하여 이중 인쇄 동작이 관찰됩니다.

리로더 비활성화

이 동작을 제거하려면 , use_reloader를 False로 설정하여 리로더를 비활성화합니다:

app.run(port=4004, debug=config.DEBUG, host='0.0.0.0', use_reloader=False)
로그인 후 복사

또는 플라스크 실행을 사용할 수도 있습니다 --no-reload 플래그가 있는 명령:

FLASK_DEBUG=1 flask run --no-reload
로그인 후 복사

리로더 프로세스 감지

werkzeug.serving.is_running_from_reloader() 함수를 사용하여 하위 프로세스를 감지합니다. :

from werkzeug.serving import is_running_from_reloader

if is_running_from_reloader():
    print(f"################### Restarting @ {datetime.utcnow()} ###################")
로그인 후 복사

사용 @app.before_first_request 데코레이터

모듈 전역을 설정해야 하는 경우 @app.before_first_request 데코레이터 사용을 고려하세요.

@app.before_first_request
def before_first_request():
    print(f"########### Restarted, first request @ {datetime.utcnow()} ############")
로그인 후 복사

이 데코레이터는 다시 로드할 때마다 한 번씩 함수를 실행합니다. 첫 번째 요청이 있을 때 made.

참고:

포킹 또는 하위 프로세스를 사용하여 요청을 처리하는 전체 규모 WSGI 서버에서는 각 하위 프로세스에 대해 before_first_request 핸들러가 호출될 수 있습니다.

위 내용은 내 Flask 개발 서버가 두 번 실행되는 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿