2016-11-21 1 views
1

나는 다음과 같이 현재 출시있어 플라스크의 응용 프로그램과 함께 일하고 있어요 : FLASK_APP__init.py__를 가리키는"python -m flask runs"을 실행하는 방법 main function?

출발 명령은 python -m flask run입니다.

__init.py__ 단순히 Flask의 인스턴스 변수 app을 설정

그 플라스크 내가 하나를 찾을 수 없습니다에도 불구하고,이 모듈에 Flask 세트의 글로벌 인스턴스를 감지하고이를 실행 날 것으로 보인다
from .app import get_app 

app = get_app() 

if __name__ == "__main__": 
    # do nothing 
    pass 

이것에 관한 문서.

플라스크 앱을 포장해야하고 소켓 인스턴스를 실행해야하는 Flask-SocketIO를 통합하고 싶습니다.

from .app import get_app 

app, sio = get_app() # returns a Flask and a SocketIO instance now 

if __name__ == "__main__": 
    sio.run(app) 
    print("Flask-SocketIO server launched") 

을하지만 예상되는 출력을 볼 수 없을, 소켓 서버가 실행하지 않는 것 : 워드 프로세서 는, 내가 주에서 실행할 수 있어야 것으로 보인다. 나에게 이것은 플라스크가 주요 기능을 무시하고 발견 한 어떤 Flask 인스턴스를 시작하는 것처럼 들린다.

왜 이런 일이 발생 했습니까? 이에 대한 문서가 있습니까? 아니면 Flask-SocketIO 통합을 잘못하고 있습니까?

+0

'if __name__ == "__main __"'은 파일을 실행할 때만 실행되며 다른 곳에서 파일을 가져올 때는 실행되지 않습니다. 'python -m flask'는'app' 나'application' 변수를 찾거나 flask 객체를 찾습니다. 'python mymainfile.py'를 통해 실행하지 않는 이유가 있습니까? – syntonym

+0

저에게 의미가 있습니다. Flask-SocketIO의 문서에는 [플라스크 실행에 대한 짧은 단락] (http://flask-socketio.readthedocs.io/en/latest/#initialization)이 있지만 정확히 어떻게 작동하는지 이해할 수 없습니다. 실행 코드는 생성하지 않은 다소 복잡한 Node 스크립트에서 실행되지만'python x.py'를 통한 동기는 볼 수 없습니다. –

답변

2

Flask 0.11과 새로운 cli를 사용하는 경우 응용 프로그램을 실행하기 위해 수행해야하는 작업은 모두 flask run입니다. Flask-SocketIO는이 명령의 구현을 무시하고 모든 것을 작동시키는 데 필요한 마술을 추가합니다.

이전 Flask 0.11 이전 버전을 사용하여 서버를 시작할 수없는 경우가 아니면 if __name__ == '__main__' 블록을 제거 할 수 있습니다.

+0

감사합니다. 누락 된 조각이었습니다! 나는 "플라스크 실행"이 실제로 Flask-SocketIO에 의해 변경된다는 문서의 어느 부분도 보지 못했습니다. 또한 이것은 이전 플래그 ('--with-threads')가 갑자기 작동을 멈춘 이유를 설명합니다. 혹시라도이 깃발이 어디에서 발견되었는지 알 수 없으므로이 국기가 문서화 된 곳을 알게됩니까 ... –

+1

@CedricReichenbach Flask-SocketIO를 Flask 서버와 함께 사용하려면 몇 가지 제한 사항이 있습니다. 특히, Flask는 일반 서버에서'--with-threads'를 사용할 수있는 옵션을 제공하지만, Flask-SocketIO를 사용할 때는 옵션을 사용할 수 없습니다. Flask-SocketIO는 스레드를 활성화해야하므로 옵션이 제거되고 스레드가 내부적으로 활성화됩니다. – Miguel

+0

아, 알겠습니다. 고마워요! –

관련 문제