2015-01-30 4 views
34

플라스크 응용 프로그램을 몇 개 만들었지 만 최신 프로젝트에서는 개발 모드에서 약간 이상한 점을 발견했습니다. 터미널에서 일반적인 메시지의 두 번째 줄은 항상 읽는 :플라스크 응용 프로그램 "통계로 다시 시작"

* Restarting with stat 

나는 사실 다른 어떤 짓을했는지 생각하지 않는다, 나는 시작 :

* Running on http://127.0.0.1:5000/ 
* Restarting with reloader 

에 의해 대체되었습니다 여러 번 사용했던 시동기 킷 프로젝트를 복제하여이 동작을 표시하지 않습니다. 또한이 프로젝트는 약 15 %의 CPU를 꾸준히 사용하는 반면, 다른 프로젝트는 거의 사용하지 않는 것으로 나타났습니다.

왜 이런 생각입니까?

+1

나는 a) 행동 변화가 Werkzeug 버전의 변화의 결과 인 것으로 확인되었다. b) 리소스 사용량의 증가가 reloader와 관련이있는 것 같습니다. debug = False로 설정하면 동작이 변경됩니다. c) 워치 독 설치는 시스템 자원 요구 사항을 낮춘다. dev 모드에서 앱을 실행하면 이전에 실행 된 Python 인터프리터와 이전에 실행 된 파이썬 인터프리터 두 개가 실행됩니다. (watchdog 또는 without) watchdog가 설치된 경우, 메시지는 다음과 같습니다. fsevents reloader를 사용하여 재시작 – domoarrigato

+0

사실, 메시지는 운영 체제에 따라 달라 지므로 워치 독이 그것에 대해 현명합니다. Linux에서이 메시지는 "inotify reloader로 다시 시작"할 수 있습니다. – davidism

+0

이 질문에 감사드립니다. 필자의 경우, 워치 독이 설치 될 때까지 리로딩 *이 전혀 작동하지 않았다. – g33kz0r

답변

36

귀하의 Werkzeug 버전을 확인하십시오. 버전 0.10이 방금 출시되었고 수많은 변경 사항이 리로더에 적용되었습니다. 한 가지 변경 사항은 기본 폴링 리로더가 사용된다는 것입니다. 오래된 pyinotify reloader는 분명히 부정확했습니다. 보다 효율적인 폴링을 원하면 watchdog 패키지를 설치하십시오. 이 here과 관련된 코드를 볼 수 있습니다.

Werkzeug에서 워치 독을 찾을 수없는 경우 stat 리로더를 사용합니다. 그렇지 않으면 리로드 워치 독이 사용하는 플랫폼에 따라 다를 수 있습니다. 이 메시지는 어느 것이 사용 중인지 알기에 충분합니다.

+0

불행히도 워치 독은'gevent '와 호환되지 않는 것으로 보입니다. 플라스크를 gevent로 사용할 때 누구나 해결책이 있습니까? –

+0

문제를 열었습니다 : https://github.com/gorakhargosh/watchdog/issues/306 –

3

run(use_reloader=False)을 사용하여 리 로더를 비활성화하십시오.

다시 시작할 때 내 서버 파일을 찾을 수없는 문제가 발생했습니다. 이것은 트릭을했다. 그것은 한 번 실행되고 모든 것이 효과가있었습니다. 아주 이상합니다.

관련 문제