2017-10-25 9 views
0

웹 사이트를 Flask (flask mega tutorial 다음)로 설정했습니다. 내가 개발 한대로 내 views.py을 편집했습니다. 동일한 디렉토리에서 프로그래밍 방식으로 편집되는 temp.py이 있습니다.특정 파일을 편집 할 때만 플라스크를 다시 시작하십시오.

바로 지금 서버를 디버그로 설정하여 views.py을 편집 할 때마다 서버가 다시 시작됩니다. 내 문제는 내 프로그램이 temp.py을 편집 할 때마다 서버가 다시 시작되고 이로 인해 많은 문제가 발생합니다. 다시 플라스크를 만들 때 views.py을 보면 플라스크를 무시할 수 있습니까? ? 모든 소스 파일에 대한 디버그 모드에서

답변

2

억제 플라스크 서버가 다시 시작되면 변경

발췌 Flask documentation에서 :

플라스크는 디버그 모드에 하지 않는 일반 오류 페이지와 모든 서버 오류가 표시되지 않습니다 . 따라서 코드를 다시로드하지 않고 대화 형 디버거 만 사용하려면 및 use_reloader=False으로 run()을 호출해야합니다. 소스 파일 중 하나가 변경되면

경우 다시 시작하지 않습니다 확인 서버를 만들 것입니다 다음은

app.run(debug=True, use_reloader=False) 
디버그 모드에서

억제 플라스크 서버가 다시 시작 일부 소스 파일이 변경에 대한

특정 시나리오의 경우 일부 소스 파일에 대해서만 서버를 다시 시작하지 않으려면 동적 모듈로드를 사용하십시오. 이를 달성하는 가장 쉬운 방법은 특정 모듈을 가져 오기에서 제거하고 __import__ 함수를 대신 사용하는 것입니다. 당신의 temp.py 동적로드 전용 모듈로 이동하고 비슷한 방식으로 거기에서 리소스를 사용하도록 코드를 조정

try: 
    # Dynamic import 
    module = __import__('modules.temp') 
    try: 
     # Execute function 
     res = getattr(module, 'ololo')(args) 
    except AttributeError: 
     flask.current_app.logger.error('Function not found') 
except ImportError: 
    flask.current_app.logger.error('Module not found') 
: -

예제 코드 기능 modules.temp.ololo(args)를 호출합니다.

+0

고맙습니다.하지만이게 내가 원하는 걸 생각하지 못했습니까? 어떻게 파일을 새로 고치는 것을 멈추는 지 알고 있습니다. 특정 파일 만 다시로드하는 방법이 있는지 궁금합니다. (따라서 views.py를 변경하면 다시로드되지만 다른 파일은 변경되지 않습니다.) – Indigo

+0

표준 방법으로는 불가능하지만 동적 모듈로드를 사용할 수 있습니다. 이는 원하는 것을 달성하는 유일한 방법 일 수 있습니다. –

+0

동적로드 예제로 업데이트되었습니다. –