私は次のように、現在発売していますフラスコアプリで働いている:"python -m flask runs"を実行するにはmain関数を実行しますか?
開始コマンドがFLASK_APP
が__init.py__
を指しpython -m flask run
、です。
__init.py__
は単にFlask
のインスタンスに変数app
を設定します。
from .app import get_app
app = get_app()
if __name__ == "__main__":
# do nothing
pass
私がいずれかを見つけることができなかったにもかかわらず、フラスコは、このモジュールでFlask
セットのグローバルインスタンスを検出し、それらを実行しているように私には思えますこれに関する文書。
フラスコアプリをラップし、ソケットインスタンスを実行する必要がある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の統合を間違っていますか?
'if __name__ ==" __main __ "'は、そのファイルを実行するときにのみ実行され、他の場所からファイルをインポートするときには実行されません。 'python -m flask'は' app'や 'application'という変数を探します。 'python mymainfile.py'で起動しない理由はありますか? – syntonym
それは私にとって理にかなっています。 Flask-SocketIOのドキュメントには[フラスコ実行の短いパラグラフ](http://flask-socketio.readthedocs.io/ja/latest/#initialization)がありますが、どのように正確に動作するはずです。起動コードは、私が作成しなかったかなり複雑なNodeスクリプトから実行されますが、 'python x.py'を介してその動機を見ることはできません。 –