Flask Dev Server에서 이중 다시 시작 인쇄
Flask를 사용하여 웹사이트 개발 서버를 실행할 때 서버가 다시 시작되는 비정상적인 동작을 사용자가 발견했습니다. 메시지가 한 번이 아닌 두 번 나타납니다. 그 이유를 이해하기 위해 Flask 개발 서버의 메커니즘을 살펴보겠습니다.
Flask는 WSGI 유틸리티 라이브러리인 Werkzeug를 활용하여 app.run() 메서드를 통해 개발 서버를 시작합니다. Werkzeug는 "다시 로드"라는 기술을 사용하여 코드 변경 사항이 감지되면 서버를 자동으로 다시 시작합니다. 다시 로드 프로세스에는 subprocess.call()을 사용하여 Flask 스크립트를 다시 실행하는 하위 프로세스를 생성하는 작업이 포함됩니다.
이 하위 프로세스는 상위 프로세스와 동일한 코드를 가정하므로 다시 시작 메시지가 이중으로 실행됩니다. 이 동작을 제거하려면 app.run()의 use_reloader 매개변수를 False로 설정하세요. 또는 Flask의 명령줄 실행 중에 리로더를 비활성화합니다.
FLASK_DEBUG=1 flask run --no-reload
다시 로드하는 하위 프로세스의 존재를 감지하는 것이 중요한 고급 시나리오의 경우 Werkzeug의 is_running_from_reloader() 함수를 활용하세요. 그러나 모듈 전역을 초기화하기 위해 @app.before_first_request 데코레이터를 활용하여 다시 로드할 때마다 단일 실행을 보장하는 것이 좋습니다.
@app.before_first_request def before_first_request(): print(f"########### Restarted, first request @ {datetime.utcnow()} ############")
전면 WSGI의 새로운 하위 프로세스마다 before_first_request 핸들러가 호출될 수 있습니다. 분기 또는 새로운 하위 프로세스를 사용하는 서버.
위 내용은 내 Flask Dev Server가 이중 재시작 메시지를 표시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!